find用法详解

find用法详解,第1张

概述Linux下find命令在目录结构中搜索文件,并执行指定的 *** 作。Linux下find命令提供了相当多的查找条件,功能很强大 find常见命令参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <strong>命令选项:</strong> -name   按照文件名查找文件。 -perm   按照文件权

linux下find命令在目录结构中搜索文件,并执行指定的 *** 作。linux下find命令提供了相当多的查找条件,功能很强大

find常见命令参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <strong>命令选项:</strong> -name   按照文件名查找文件。 -perm   按照文件权限来查找文件。 -user   按照文件属主来查找文件。 -group  按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件 【-7 7天之内 +7 7天前】 -nogroup  查找无效属组的文件,即该文件所属的组在/etc/groups中不存在。 -nouser  查找无效属主的文件,即该文件的属主在/etc/passwd中不存在。 -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。 -type  查找某一类型的文件,诸如:          b - 块设备文件。          d - 目录。          c - 字符设备文件。          p - 管道文件。          l - 符号链接文件。          f - 普通文件。 -size n:[c] 查找文件长度为n块的文件,带有c表示文件长度以字节计。 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。   另外,下面三个的区别: -amin n    查找系统中最后N分钟访问的文件 -atime n   查找系统中最后n*24小时访问的文件 -cmin n    查找系统中最后N分钟被改变文件状态的文件 -ctime n   查找系统中最后n*24小时被改变文件状态的文件 -mmin n    查找系统中最后N分钟被改变文件数据的文件 -mtime n   查找系统中最后n*24小时被改变文件数据的文件
常用的命令展示

查找普通文件/目录

1 2 find  /home/omd  - type  f  (普通文件) find  /home/omd  - type  d  (查询目录)

只显示1级目录文件且过滤自身

1 find  ./ -maxdepth 1  - type  d  ! -name "hhh"

查找一天内被访问过(access)的文件

1 find  /home/omd/  -atime -1 - type  f

查询inode相同的文件

1 find  / -inum inode数字

除了某个文件以为,其余的均删除

1 2 find  /home/omd/  - type  f ! -name h.txt  | xargs   rm  –f  ls  | grep  - v  "h.txt"  | xargs  rm  -rf (与上面类似,删除除了某个文件外的所有文件)

删除目录下所有文件

1 2 find  /tmp/  - type  f - exec  rm  -rf {} \; find  /tmp/  - type  f | xargs  rm  -rf

查看当前路径下所有文件的信息:

1 2 find  /tmp/  - type  f ! -name a | xargs  rm  –rf find  ./ - type  f - exec  file  {} \;

 

查找指定时间内修改过的文件

1 2 3 4 5 6 7 8 9 10 # 当前路径下访问文件超过2分钟文件 find  ./ -amin +2 # 当前路径下访问文件刚好2分钟的文件 find  ./ -amin 2 find  ./ -cmin +2 find  ./ -mmin +2 find  ./ -mtime +2 find  ./ -ctime +2 find  ./ -mtime +2 find  ./ -ctime +2
1 2 3 4 find  / -ctime  +20  最近修改文件时间20分钟以前 find  / -mtime  +7   修改文件为7天之前的(最重要) find  / -mtime  7    修改文件为第7天,就是往前推7天 find  / -mtime  -7   修改文件为7天之内的

按照目录或文件的权限来查找文件

1 find  /opt  -perm 777

按大小查找文件

1 2 3 find  / -size +10M  | sort  【查找大于10M的文件】 find  / -size -10M  | sort  【查找小于10M的文件】 find  / -size 10M   | sort   【查找10M的文件】

 

在test 目录下查找不在test4子目录之内的所有文件

1 2 find  . /test  -path "test/test4"  -prune -o -print 【可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被 find 命令忽略】

查找比yum.log 但不比hhh.txt新的文件

1 [[email protected] ftl] # find / newer /var/log/yum.log ! -newer ./hhh.txt

 

查找更改时间在比log2012.log文件新的文件

1 find  ./ -newer log2012.log

在当前目录下查找文件长度大于1 M字节的文件

1 2 find  ./ -size +1000000c –print find  ./ –size +1M -print

在/home/apache目录下查找文件长度恰好为100字节的文件:

1 find  /home/apache  -size 100c -print

在当前目录下查找长度超过10块的文件

1 find  . -size 10 –print
1   

其他命令:

1 2 3 4 5 6 7 find  /home/omd/  -name *.txt | while  read  line; do  cp  $line /home/omd/h ; done for  name in  `chkconfig | grep  3:on | awk  ‘{print }‘ ` ; do  echo  $name >> h.txt; done ; find  /home/omd/  -name *.txt | xargs  -i cp  {} /home/omd/h cat  /home/omd/h/he .txt | while  read  line; do  echo  $line >> /home/omd/h .txt ; done ; cat  /home/omd/h .txt | awk  ‘BEGIN{print "name "} {print }‘ cat  /home/omd/h .txt | xargs  -I {} cat  {} find  . -name  "*.txt"  | xargs    sed  -i ‘s/hhhh/\hHHh/g‘
find命令之exec/ok/print

ls -l命令放在find命令的-exec选项中

1 find  . - type  f - exec  ls  -l {} \; 【{}   花括号代表前面 find 查找出来的文件名】

在目录中查找更改时间在n日以前的文件并删除它们

1 find  ./ -mtime +10 - exec  rm  {} \;

在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示

1 find  / -mtime +1 -a -name "*.log"  - type  f -ok cp  {} /tmp/ftl  \; 【-ok是安全模式,根 exec 效果同】

-exec中使用grep命令

1 find  /etc  -name "passwd*"  - exec  grep  "root"  {} \; 【过滤文件内容用】

查找文件移动到指定目录

1 find  . -name "*.log"  - exec  mv  {} .. \;

用exec选项执行cp命令  

1 find  . -name "*.log"  - exec  cp  {} test3 \;

用xargs选项执行cp命令  

1 find /root -name “*txt” | xargs rm -rf

 

-exec
    1.参数是一个一个传递的,传递一个参数执行一次rm
    2.文件名有空格等特殊字符也能处理
-xargs 
    1.一次将参数传给命令,可以使用-n控制参数个数
    2.处理特殊文件名需要采用如下方式:
    find . -name "*.txt" print0 |xargs -0 rm {} 

总结

以上是内存溢出为你收集整理的find用法详解全部内容,希望文章能够帮你解决find用法详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1021285.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存