更新时间:

#linux  find 命令

#默认包含子目录,不需要-R

  • find /usr/share -type d 类型
    类型:
    • b block special
    • c character special
    • d directory
    • f regular file
    • l symbolic link
    • p FIFO
    • s socket
  • find / -name filename.txt根据名称查找/目录下的filename.txt文件。
  • find . -name “*.xml”递归查找所有的xml文件
  • find . -name “*.xml” |xargs grep “Hello World”
    递归查找所有文件内容中包含hello world的xml文件,找内容
  • 上边命令, 如果没有xargs 则会grep 找出来的文件名
  • grep -H ‘spring’ *.xml 查找所有的包含spring的xml文件
    -H: Always print filename headers with output lines.
  • find ./ -size 0 | xargs rm -f & 删除文件大小为零的文件
  • grep ‘test’ d*显示所有以d开头的文件中包含test的行。
  • find test -type f ! -name "5" | xargs rm -f 删除目录下文件,排除某个文件
  • grep ‘test’ aa bb cc显示在aa,bb,cc文件中匹配test的行。
  • find . -type d -print
  • find . -name 'my*' -ls
    搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
  • grep ‘[a-z]/{5/}’ aa显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
  • find ./stats/ -type f -name “*.php” -exec grep -nH “10.121.248.87” {} ;
  • 想查看当前文件夹及子文件夹里有没有”xyz”目录 # find . -type d -name xyz
  • find . -name “*.txt”
  • find . -user roc 用户自己的文件 ( 此处可替换为-group )
  • find . -perm 755 前文件夹及子文件夹里权限设定为755的所有文件
  • 如果想全部输出用find命令查找出的”*.abc”文件的内容
    -find . -type f -name “*.abc” -exec cat {} ;
    1. -exec 表示由find找到的匹配项会作为“-exec后面设定的命令”的参数
    2. 可以使用-ok代替-exec,这样对每个匹配项进行操作,都会要求用户确认(y为是,n为否)
    3. 命令最后的{} ; 别忘了写,其中{}代表用find查找到的结果中的每一个查找项。
  • find . -amin -5 查找当前目录下在5分钟内被访问过的文件
    1. 访问过用amin,修改过用mmin,文件状态改变过用cmin. 精确到分钟的用amin,mmin,cmin,精确到天的用atime,mtime,ctime
    2. find . -type f -mmin -10 搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
    3. 在5分钟之内的用-5,在5分钟以上的用+5
  • 想查找当前目录及子目录下文件大小大于10M的所有文件
    • find . -size +10000000c
    • -size:表示文件大小,+表示大于某个数,-表示小于某个数。c表示单位是字节,你可以将c换成k,M,G。
  • 上述所有的find命令都是查找当前目录及其子目录。如果不想深入到子目录中,而是只查找当前一层目录,则可以:
    • find . -maxdepth 1 -name “*.c”