Linux下find命令使用总结

Linux下find命令使用总结

find命令

功能:在一个目录(及子目录)中搜索文件,可以指定匹配条件,如文件名、文件类型、用户甚至是时间戳查找文件。

find语法

find path -option [ -print] [ -exec -ok command ] {} \
path:所查找的目录路径
option:常用的选项
print:将匹配的文件输出到标准输出
exec:对匹配的文件执行该参数所给出的shell命令。
-ok与-exec作用相同,但-ok是以一种更为安全的模式来执行该参数所给出的shell命令,在执行每个命令之前,都会给出提示,让用户来确定是否执行。

find参数说明:

-perm:按照文件权限来查找文件
-prune:使find命令不在当前指定的目录中查找,如果同时使用-depth选项,则-prume将被find命令忽略
-mount,-xdev:只检查指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-atime/天,-amin/分钟:访问时间,用户最近一次访问时间
-mtime/天,-mmin/分钟,修改时间,文件最后一次修改时间
-ctime/天,-cmin/分钟,变化时间,文件数据元(如权限等)最后一次修改时间
-amin n:在过去n分钟内被读取过
-anewer file:比文件file更晚被读取过的文件
-atime n:在过去n天读取过的文件
-cmin n:在过去n分钟内被修改过
-cnewer file:比文件file更新的文件
-ctime n:在过去n天修改过的文件
-empty:空的文件
-ipath p, -path p:路径名称符合p的文件,ipath会忽略大小写
-name name, -iname name:文件名称符合name的文件。iname会忽略小写写
-size n:文件大小是n单位,b代表512位元组的区块,c表示字节数,k表示kilo bytes,w是二个字符组。-type c:文件类型是c的文件。
d:目录
c:字符设备文件
b:块设备文件
p:管道文件
f:一般文件
l:符号链接
s:socket
-pid n:process id是n的文件

find常用命令

列出当前目录及其子目录下所有.cpp文件
find . -name "*.cpp"
列出当前目录及其子目录中所有一般文件
find . -type f
列出当前目录及其子目录下所有最近20天内更新过的文件
find . -ctime -20
将当前目录下更改时间在1天内的普通文件删除,删除前询问
find . -type f -mtime -1 -ok rm {} \;
列出当前目录文件具有读、写权限,且文件所属组用户和其他用户具有读权限的文件
find . -type f -perm 644 -exec ls -l {} \;
列出系统中文件长度为0的普通文件
find . -type f -size 0 -exec ls -l {} \;
删除当前目录下文件长度为0的文件
find . -size 0 -exec rm {} \;
find . -size 0 | xargs rm -f &
在根目录及其子目录下查找test.py
find / -name test.py
在当前目录,但不在其子目录heh中查找文件
find . -path "./heh" -prune -o -print
在当前目录及其子目录但不包括./old目录下查找.sh结尾的文件
find . -path "./old" -prune -o -name "*.sh" -print
找出当前目录下,文件属主为root的文件
find . -user root -print
找出当前目录下文件所属组是team的文件
find . -group team -print
在当前目录下查找更改时间在1日内的文件
find . -mtime -1 -print
在当前目录下查找更改时间在1日以前的文件
find . -mtime +1 -print
查找无有效所属组的文件,即改文件所属组在/etc/groups中不存在
find / -nogroup -print
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
find /home -nouser -print
查找更改时间比test早
find . -newer test
列出当前目录下的目录文件
find . -type d -print
列出当前非目录的文件
find . ! -type d -print
列出/etc目录下的符号链接文件
find /etc -type l -print
找出根目录下文件长度为1G字节的文件
find / -size +1000000000c -print
在当前目录下查找长度超过10块的文件(一块等于512字节)
find . -size +10 -print
查找当前目录中的每一个普通文件,然后使用xargs命令测试它们分别属于哪类文件
find . -type f -print | xargs file
用grep命令在所有的普通文件中搜索hehe这个词
find . -type f -print | xargs grep "hehe"
删除文件大小为0的文件
find . -size 0 | xargs rm -f &
找到文件下test文件(忽略大小写)
find . -iname "test"
列出当前目录及子目录下所有.py和.sh结尾的文件
find . \( -name "*.sh" -o -name "*.py" \)
find -name "*.py" -o -name "*.sh"
find . -regex ".*\(\.sh\|\.py\)$"
列出当前目录及子目录下所有.py和.sh结尾的文件(忽略大小写)
find . -iregex ".*\(\.sh\|\.py\)$"
匹配带he的目录或文件
find . -path "*he*"
查找不是以.py结尾的文件
find . ! -name "*.py"
列出当前目录最大深度为3的普通文件
find . -maxdepth 3 -type f
列出深度距离当前目录至少3个子目录的所有文件
find . -mindepth 3 -type f
根据文件大小进行匹配
find . -type f -size 文件大小单元
b——块(512字节),c——字节,w——字(2字节),k——千字节,M——兆字节,G——吉字节
删除当前目录下名为test.py的普通文件
find . -type f -name test.py -delete
将2天前的.sh文件移动到old目录中
find . -type f -mtime +2 -name "*.sh" -exec cp {} ./old \;
找出当前目录下所有.sh文件,并以“File:文件名”的形式打印出来
find . -type f -name "*.sh" -exec printf "File: %s\n" {} \;
查找当前目录下所有空文件
find . -empty
查找当前目录下所有空文件和目录,并删除
find . -empty | xargs rm -f &
find . -empty -exec rm -rf {} \;
find . -empty -ok rm -fr {} \;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值