长枪不倒 发表于 2018-5-19 09:14:57

Linux find命令记录

  1、命令格式:
          find pathname -options[-print -exec ...]
2、命令参数:
          pathname : 查找的目录路径。例如:./表示当前目录,/表示系统根目录。
          -print :将匹配的文件输出到标准输出。
          -exec :对前边匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{   }和\;之间的空格。
  3、命令选项(options):
            -name:安装文件名查找文件
           -perm:安装文件权限查找文件
            -prune :该选项使find命令不在当前指定的目录中查找,如果同时使用-depth 选项,则-prune选项被find命令忽略。
            - user:按照文件属性查找文件
            -group :安装文件所属组查找文件
           -mtime -n +n :按照文件更改的时间查找文件,-n表示文件更改时间据现在n天以内,+n表示文件更改时间据现在n天以前,atime 类似
            -nogroup :查找无效所属组的文件即该文件属组在/etc/group中不存在。
            -nouser :查找无效属主的文件,即该文件属主在/etc/passwd中不存在。
            -newer file1 !file2 :查找更改时间比文件file1新但比file2旧的文件。   
         -type :查找某一类型的文件,如下:
                     b//块设备文件(一块儿等于512字节)
                     d//目录
                     c//字符设备文件
                     p//管道文件
                     l   //符号链接文件
                     f   //普通文件
                     -follow :如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
  

  find常用实例:
  find ~ -name "*.log" -print   //查找家目录及其子目录中的文件
  find . -name "*.log" -print
  find . -name "*" -print
  find /etc -name "host*" -print
  find ~ -name "*" -print 或find . -print    //查找家目录下的文件
  find . -name "*.log"-print   //想在当前目录查找文件名以一个个小写字母开头,最后是4到9加上.log结束的文件
  
  # find . -perm 755 -print   //当前目录下查找文件权限位为755的文件
  # find test -path "test/test3"-prune -o -print   //希望在test目录下查找文件,但不希望在test/test3目录下查找
  
  find . -size +1000000c -print   //在当前目录下查找文件长度大于1 M字节的文件
  # find . -size +1000c -print   //查找当前目录大于1k的文件
  find /home/apache -size 100c -print   //在/home/apache目录下查找文件长度恰好为100字节的文件
  find . -size +10 -print   //在当前目录下查找长度超过10块的文件(一块等于512字节)
  
  使用type选项:
  实例1:在/etc目录下查找所有的目录
  命令:
  find /etc -type d -print
  实例2:在当前目录下查找除目录以外的所有类型的文件
  命令:
  find . ! -type d -print
  实例3:在/etc目录下查找所有的符号链接文件
  命令:
  find /etc -type l -print
  
  
  # find -atime -2    //查找2天内修改过的文件
  # find . -name "*.log"   //在当前目录下查找.log结尾的文件
  
  # find . -type f -name"*.log"//查找当前目录以.log结尾的普通文件
  # find . -type d | sort    //查找当前所有目录并排序
  
  #
  *************-exec 可是使用xargs来代替比较方便书写和操作。************************
  # find . -type f -exec ls -l {} \;   //查找当前目录下的普通文件后使用ls -l查看
  对前边处理的结果再处理
  可更改为:#find .=type -f|xargs ls -l   //利用管道把前边执行后的数据再处理。
  
  # find . -type f -mtime +14 -exec rm {}\;//在当前目录中查找更改时间距现在14天以前的普通文件后删除
  可更改为:#find .-ytpe f -mtime +14 |xargs rm
  
  # find . -name "*.log" -mtime +5-ok rm {} \;//在当前目录下查找更改时间距现在5天之前的文件并删除他们,在删除之前先给出确认提示。
  #
  # find /etc -name"passwd" |xargs grep "root"
  /etc/passwd:root:x:0:0:root:/root:/bin/bash
  /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
  #
  
  # find . -name "*.log" -exec mv{} .. \;    //查找文件移动到指定目录#这条命令是将查到的文件移动到上一级目录下。
  
  # find . -name "*.log" -exec cp{} test3 \;   //查找当前目录下以*.log结尾的文件cp到test3目录下。
  可更改为:#find .-name"*.log" |xargs cp test3
  # find . -name "file" | xargs -I[] cp [] ..    //等同上一个
  #
  #
  注:总之:xargs和exec的执行效果一样的,xargs的执行效率比exec要高很多!
  # find . -type f -print | xargs file   //查找当前目录下普通文件后查下文件的属性。
  # find / -name "core" -print |xargs echo "" >/tmp/core.log //在根目录下查找内存信息后标准输出的内容转存到cort.log文件中。
  # find . -perm -7 -print | xargs chmodo-w   //查找当前目录下所有用户具有读、写和执行权限的文件,并收回写的权限。
  # find . -type f -print | xargs grep"hostname"   //查找当前目录下的普通文件中包括hostname这个词。
  # find . -name \* -type f -print | xargsgrep "hostnames"    //同上
  # find . -name "*.log" | xargs -imv {} test4   //查找当前目录下包括.log的文件后移动到test4目录下。
  
  # find . -name "*.log" | xargs -p -i mv {} ..   //-p 是在移动时提示确认是否执行后边的命令。
  
页: [1]
查看完整版本: Linux find命令记录