如何正确使用Linux中的find命令语法?

find 命令的基本语法find [起始目录] [查找条件] [操作]。它用于在指定目录及其子目录中查找符合特定条件的文件或目录,并可以对找到的结果执行指定操作。

基本语法

find [起始目录] [寻找条件] [操作]

起始目录:指定从哪个目录开始查找,例如. 表示当前目录,/ 表示根目录。

find linux命令语法

寻找条件:用于指定查找文件的条件,可以包含多种选项和逻辑运算符。

操作:对找到的文件执行的操作,如-print-exec-ok-delete 等。

常用选项及示例

1、按名称查找

精确匹配-name "filename"

     find /path/to/search -name "syslog"

忽略大小写匹配-iname "filename"

     find / -iname "syslog"

模糊搜索-regex "正则表达式"

     find / -regex ".*syslog.*"

2、按类型查找

普通文件-type f

     find /path/to/search -type f

目录-type d

find linux命令语法
     find /path/to/search -type d

符号链接-type l

     find /path/to/search -type l

块设备文件-type b

     find /path/to/search -type b

字符设备文件-type c

     find /path/to/search -type c

管道文件-type p

     find /path/to/search -type p

套接字文件-type s

     find /path/to/search -type s

3、按大小查找

大于指定大小-size +N[cwbkMG],N 为数值,c 表示字节,w 表示双字,b 表示块(512 字节),k 表示千字节,M 表示兆字节,G 表示吉字节。

     find /path/to/search -size +10M

小于指定大小-size -N[cwbkMG]

     find /path/to/search -size -1M

等于指定大小-size N[cwbkMG]

find linux命令语法
     find /path/to/search -size 10M

4、按修改时间查找

N 天前修改的文件-mtime +N

     find /path/to/search -mtime +7

N 天内修改的文件-mtime -N

     find /path/to/search -mtime -7

N 天前正好修改的文件-mtime N

     find /path/to/search -mtime 7

5、按访问时间查找

N 天前访问的文件-atime +N

     find /path/to/search -atime +30

N 天内访问的文件-atime -N

     find /path/to/search -atime -7

N 天前正好访问的文件-atime N

     find /path/to/search -atime 7

6、按更改时间查找

N 天前更改的文件-ctime +N

     find /path/to/search -ctime +30

N 天内更改的文件-ctime -N

     find /path/to/search -ctime -7

N 天前正好更改的文件-ctime N

     find /path/to/search -ctime 7

7、按权限查找

精确匹配权限-perm 权限,例如-perm 755 表示权限为 rwxr-xr-x。

     find /path/to/search -perm 755

至少匹配某些权限-perm /权限,例如-perm /u=rwx,g=rx,o=rx 表示用户具有读写执行权限,组和其他用户具有读和执行权限。

     find /path/to/search -perm /u=rwx,g=rx,o=rx

不匹配某些权限! -perm 权限,例如! -perm 755 表示不匹配权限为 rwxr-xr-x 的文件。

8、按用户或组查找

属主为用户-user 用户名

     find /path/to/search -user john

属组为组名-group 组名

     find /path/to/search -group staff

9、组合条件

逻辑与(默认):无需特别指定,直接将多个条件写在一起。

     find /path/to/search -name "*.txt" -type f -size +10M

逻辑或:使用-or

     find /path/to/search ( -name "*.txt" -or -name "*.log" )

逻辑非:使用!

     find /path/to/search ! -name "*.txt"

10、执行操作

打印结果-print(默认操作)

      find /path/to/search -name "*.txt" -print

执行命令-exec 命令 {} ;{} 表示找到的文件名,; 表示命令结束,例如删除找到的文件:

      find /path/to/search -name "*.tmp" -exec rm -f {} ;

询问后执行命令-ok 命令 {} ;,会提示用户确认是否执行命令。

      find /path/to/search -name "*.txt" -ok rm {} ;

直接删除文件-delete,相当于-exec rm -f {} ;

      find /path/to/search -name "*.tmp" -delete

限制搜索深度:使用-maxdepth N 限制最大搜索深度为 N,-mindepth N 限制最小搜索深度为 N。

      find /path/to/search -maxdepth 2 -name "*.txt"

使用正则表达式查找-regex "正则表达式",支持正则表达式匹配文件路径。

      find /path/to/search -regex ".*.txt$"

排除特定目录:使用! -path "排除路径",要查找除/tmp 目录外的所有.txt 文件:

      find / -path "/tmp" -prune -o -name "*.txt" -print

结合其他命令使用:可以使用xargsfind 的结果传递给其他命令,例如复制找到的文件到另一个目录:

      find /path/to/search -name "*.jpg" | xargs -I {} cp {} /destination_directory/

常见问题解答(FAQ)

1、如何查找当前目录下所有扩展名为.txt 的文件?

   find . -name "*.txt"

2、如何在查找文件时忽略大小写?

   find /path/to/search -iname "filename"

3、怎样查找过去 7 天内修改过的文件?

   find /path/to/search -mtime -7

4、如何查找大于 100MB 且扩展名为.log 的文件?

   find /path/to/search -type f -size +100M -name "*.log"

5、怎样删除当前目录下所有以.tmp 结尾的文件?

   find . -name "*.tmp" -delete

6、如何查找属于用户john 的所有文件?

   find /path/to/search -user john

7、怎么查找某个目录下所有子目录中的文件,但不递归到更深的子目录?

   find /path/to/search -maxdepth 1 -type f

8、如何使用find 命令结合grep 查找包含特定文本的文件?

   grep -rl "特定文本" /path/to/search

或者先使用find 定位文件,再用xargs grep

   find /path/to/search -type f | xargs grep -l "特定文本"

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1432805.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-12-27 23:18
下一篇 2024-12-27 23:23

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入