shell命令find

介绍

  find命令的工作方式:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。

选项

  -print:指明打印出匹配文件的文件名(路径)。当使用-print时,‘\n‘作为用于分隔文件的定界符

  -print0:指明使用‘\0‘作为定界符来打印每一个匹配的文件名。当文件名中包含换行符时,这个方法就有用武之地了

  -name:指定文件名所必须匹配的字符串。支持通配符

    find /home/dd -name "*.txt" -print

  -iname:-name忽略大小写

  -path:匹配路径,支持通配符。

    find . -path "*www*"

  -perm:指定权限

  -regex:使用正则表达式来匹配文件

    find . -regex ".*\(\.py\|\.sh\)$"

  -iregex:-regex忽略大小写

  -maxdepth:指定查找最大深度目录

    find . -maxdepth 1 -type f -print

  -mindepth:指定从第几深度目录开始查找

  运算符

    ( expr ):Force precedence.

    expr1 expr2

      Two expressions in a row are taken to be joined with an implied "and"; expr2 is not evaluated if expr1 is false.
      find . -name ‘1.txt‘ -type f -user ‘pdd‘

    ! expr:逻辑非

      find ! -name ‘tmp‘

    expr1 -a expr2:逻辑与,默认选项

      Same as expr1 expr2.

    expr1 -o expr2:逻辑或

      Or; expr2 is not evaluated if expr1 is true.

      find . \( -name "*.txt" -o "*.pdf" \) -print

  -type: 指定查找文件的类型

    b 块设备

    c 字符设备

    d 目录

    f 普通文件

    l 符号链接

    p FIFO

    s 套接字

  根据文件时间进行搜索(-{a,m,c}time以天为计量单位,-{a,m,c}min以分钟为计量单位)

  访问时间(-atime,-amin):用户最近一次访问文件的时间

  修改时间(-mtime,-mtime):文件内容最后一次被修改的时间

  变化时间(-ctime,-cmin):文件元数据(metadata,例如权限或所有权)最后一次改变的时间

    find . -type f -atime -7 -print  # 最近七天内被访问过的文件

    find . -type f -atime 7 -print  # 恰好七天前被访问过的文件

    find . -type f -atime +7 -print  # 访问时间超过七天的文件

  -size:根据文件的大小进行搜索

  b 块(512字节 default)

  c 字节

  w 字(2字节)

  k 千字节

  M 兆字节

  G 吉字节

    find . -type f -size +2k  # 大于2KB的文件

    find . -type f -size -2k  # 小于2KB的文件

    find . -type f -size 2k  # 等于2KB的文件

  -delete:删除查找到的匹配文件

  -user(可以是用户名或UID):查找特定用户所拥有的文件

  -exec command {} \;:与其他命令进行结合

    find . -type f -user root -exec chown www {} \;

    在这个命令中,{}是一个特殊的字符串,与-exec选项结合使用。对每一个匹配的文件,{}会变替换成相应的文件名。例如,上述命令找到两个文件test1.txt和   test2.txt,它最终会被解析位chown www test1.txt和chown www test2.txt

  -prune:跳过指定的目录

    find . -path ./pdd -prune -o -print

时间: 2024-10-20 19:43:40

shell命令find的相关文章

批量执行shell命令

虽然目前都实现了自动化如puppet saltstack在环境中的应用,但工作中不可避免的要自己写一些简单的批量执行shell命令的脚本. python paramiko模块是目前使用得较为顺手的模块,执行命令时基本无需要转换,直接将shell命令扔进去执行就OK 简单示例,10个线程同时执行ssh或scp动作,未设置timeout时间,如执行长时间无反应会导致脚本执行问题: #!/usr/bin/python # _*_ coding: utf-8 _*_ import paramiko im

Linux下的C程序,使用函数execlp运行Shell命令

通过C程序运行Shell命令,使用execlp函数 execlp的几个参数分别为:文件名,各个参数,(char*)0 其中"各个参数"部分中的第一个参数就是文件名(相当于文件名要输入两遍) 最后一个参数写(char*)0就可以了 文件b.cpp代码: 循环地输入命令→执行命令,直到按下Ctrl+C结束 #include <stdio.h> #include <string.h> #include <unistd.h> #include <std

使用sh库执行shell命令

python中执行shell命令 之前执行shell命令多是通过os.system(shell命令)的方式来执行,比较麻烦. 了解到sh是一个比subprocess好的库,能够执行shell命令 1.查看ip: [[email protected] myblog]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.31.253.193 netmask 255.255.240.0 broadcas

adb shell 命令详解

adb介绍 SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序.借助这个工具,我们可以管理设备或手机模拟器的状态.还可以进行以下的操作:  1.快速更新设备或手机模拟器中的代码,如应用或Android 系统升级: 2.在设备上运行shell命令: 3.管理设备或手机模拟器上的预定端口: 4.在设备或手机模拟器上复制或粘贴文件

Python之路35-subprocess模块和Python3中常用执行shell命令方法

import subprocess #执行命令,返回命令执行状态 , 0 or 非0 retcode = subprocess.call(["free","-m"])    #返回值可判断执行是否正确,命令执行结果直接返回到屏幕 #执行命令,如果命令结果为0,就正常返回,否则抛异常 result = subprocess.check_call(["ls","-l"]) #执行命令,并返回结果,注意是返回结果,不是打印,下例结果

vim中执行shell命令

1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如 :!ls -l 特别的可以运行:!bash来启动一个bash shell并执行命令,不需要退出vim 2):r !command 将shell命令command的结果插入到当前行的下一行 例如 :r !date,读取时间并插入到当前行的下一行.

awk中可以使用system来执行复杂的shell命令

在awk中可以直接执行shell命令. [plain] view plain copy [email protected]:~$ touch a [email protected]:~$ touch b [email protected]:~$ cat a.txt a b [email protected]:~$ awk '{cmd="rm "$0;system(cmd)}' a.txt [email protected]:~$ ls a.txt      dd            

java程序执行,调用shell命令和shell脚本

  坑呀!记得在start()之后, waitFor()之前把缓冲区读出来打log,否则是阻塞缓冲区,没有输出的 package com.jikexueyuancrm.util; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import

Java调用Shell命令和脚本,致力于hadoop/spark集群

前言 说明的是,本博文,是在以下的博文基础上,立足于它们,致力于我的大数据领域! http://kongcodecenter.iteye.com/blog/1231177 http://blog.csdn.net/u010376788/article/details/51337312 http://blog.csdn.net/arkblue/article/details/7897396 第一种:普通做法 首先,编号写WordCount.scala程序. 然后,打成jar包,命名为WC.jar.

Linux shell 命令和正则表达式

今天在Fedora20系统上编译VPP项目时遇到了一个问题,在最终编译并且使用rpmbuild生成的rpm安装包不正确,我们需要对生成rpm包的spec文件做一些小的修改. 首先我们来看看VPP自带的生成rpm包的spec描述文件,该文件为${VPP_TOPDIR}/build-root/rpm/vpp.spec, 我们可以打开看看该文件的内容: 其中在%install 段里面有如下的命令 1 # 2 # libraries  3 #  4 mkdir -p -m755 %{buildroot}