find
Find 查找,用于在目录中查找。
find path options tests actions
path 路径
options 选项
tests 测试
actions 动作
optioins选项:
-follow
-depth
-maxdepth
-mindepth
find dir -mindepth n 指定最小的目录深度,至少从dir往下n级目录开始往下搜索,dir和n级之间的忽略。
find dir -maxdepth n 指定最大目录深度,不搜索n级之后的目录。
test选项很多:
-newer pattern 比pattern文件要新
-user pattern 文件属主是pattern
-name pattern 查找和type匹配的
-iname pattern 查找和type匹配的,会忽略大小写
-iwholename
-path pattern 按照文件路径匹配
-type c c是文件类型,按照文件类型匹配文件
c可以是:f 常规文件 d 目录 p 命名管道 l 符号链接 b 块设备 c 字符设备 s 套接字
-size +/- nk/c/w/k/b/M/G 匹配大于或小于n kb/.. 的文件
find dir -size +10M # 查找大于10M的文件
-perm XXX 基于文件权限的匹配
find dir -perm 644 # 查找权限是644的文件
find dir –atime/mtime/ctime +/-n 根据时间累匹配,atime表示访问时间,mtime表示修改时间,ctime表示变化时间,+表示大于,-表示小于,单位是天。
-a/-and pattern
-o/-or pattern
!/-not pattern
find dir ! test pattern 列出所有没有按照-options pattern模式的项
\(...\) 使用括号需要用引号来引用。
action选项:
-prune 如果是一个指定的目录就忽略这个目录,要用-path指定目录.
-print 打印,换行符结尾,所有结果一行一个。
-print0 打印,空字符结尾,所有结果打印到一行。
-delete 删除
-exec command # 执行一个命令
exec command {} \;
operators: find可以用一些运算符来连接多个test条件。
!expr #取反
expr1 -a expr2 #与运算,可以省略-a
expr1 -o expr2 #或运算
查找当前目录下除了develop里面的文件以外的30天之内修改过的.txt文件
find . -path ./develop -prune -o -mtime -30 -type f -name "*.txt" -print
将前面的命令的结果通过管道和xargs作为后面命令的输入,类似于find命令的-exec选项。
格式 :command1 | xargs -options command2
xargs -n number 设置每行显示的参数数量为number。
xargs -d char 指定char为界定符,也就是将char换成空格。
xargs -I {} 将命令参数用STDIN的参数替换掉。
xargs -0 以/0为定界符,而不是空格。
find . -name “*.c” | xargs wc -l
find . -name “*.c” -exec wc -l {} \;
wc -l `find . -name “*.c”`