linux 常用命令find

本文详细介绍了Linux中的find命令,包括基本用法、查找选项、exec、xargs等参数的使用,并给出了多个实用示例,如按时间查找、大小查找、执行命令等。此外,还提到了find命令在处理大量文件时应注意的命令行长度限制问题,以及如何通过xargs解决此问题。同时,文章还展示了如何使用find命令进行文件排序。
摘要由CSDN通过智能技术生成

find   path  -option  【 -print 】  【 -exec   -ok   |xargs  |grep  】 【  command  {} \;  】

1.path 要查找的路径

2 options 表示查找方式

-name   filename               #查找名为filename的文件
-perm                                #按执行权限来查找
-user    username             #按文件属主来查找
-group groupname            #按组来查找
-mtime   -n +n                   #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n                   #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime    -n +n                  #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                          #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                            #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type    b/d/c/p/l/f             #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]                    #查长度为n块[或n字节]的文件
-mount                            #查文件时不跨越文件系统mount点
-follow                            #如果遇到符号链接文件,就跟踪链接所指的文件
-prune                            #忽略某个目录
    

3.exec:对匹配的文件执行该参数所给出的shell命令。 
      形式为command {} \;,注意{}与\;之间有空格  

4ok:与exec作用相同,
      区别在于,在执行命令之前,都会给出提示,让用户确认是否执行 

5.|xargs  与exec作用相同 ,起承接作用

   (1)将前一个命令的标准输出传递给下一个命令,作为它的参数,xargs的默认命令是echo,空格是默认定界符

   (2)将多行输入转换为单行

     (3)   xargs 需要结合管道使用

     (4)   xargs 不能操作文件名有空格的文件

      

find . -name "*.txt"  -exec echo test {} \;

      

 find . -name "*.txt"  |xargs echo test

      

     很明显,exec是对每个找到的文件执行一次命令,除非这单个的文件名超过了几k,否则不
     会出现命令行超长出报错的问题。而xargs是把所有找到的文件名一股脑的转给命令。当文件很       多时,这些文件名组合成的命令行参数很容易超长,导致命令出错。

find .  -size +100M -size -200M -exec ls -al {} \;

 

 查找2019-08-082019-11-23号之间的文件

find /var/log/ -name '*.log' -newermt '2019-08-08' ! -newermt '2019-11-23'

  找出 3 天”以前”被改动过的文件 72小时之前

find /var/log/ -mtime +3 -type f -print

找出 3 天內被改动过的文件 (0 ~ 72 小时內)

find /var/log/ -mtime -3 -type f -print

找出前第 3 天被改动过的文件 (72 ~ 96 小时)

find /var/log/ -mtime 3 -type f -print

 6.需要注意的地方

find -name只能支持普通的通配符如*等,简单的-regex也不能支持扩展的正则表达式,要支持扩展的正则表达式,可用如下命令。
如要找出当前目录下字母开头至少4个数字结尾的txt文件,可以如下这么写:
find ./ -regextype 'posix-egrep' -regex '\./[a-z]+[0-9]{4,}\.txt$'

7.查找文件并排序

find ./  -type f -size +10M  -print0 | xargs -0 ls -lh  | sort -nr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值