zoukankan      html  css  js  c++  java
  • shell学习笔记2-find和xargs

    1,find命令形式

      find pathname -options [-print - exec -ok]

      pathname find命令所查找的目录路径。. 表示当前目录,/表示系统根路径

      -print 将匹配的文件输出到标准输出

      -exec find命令对匹配的文件执行该参数所给出的shel命令。相应的命令形式 'command' {}

      -ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令

    2,find的主要选项

      -name 按照文件名查找文件

      -perm 按照文件权限来查找文件

      -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用了-depth,那么-prune选项将被find忽略

      -user 按照文件属主查找文件

      -group  按照文件所属组来查找文件

      -mtine -n +n 按照文件的更改时间来查找文件,-n表示更改时间距离现在n天以内,+n表示更改时间再距离现在n天以前

      -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在

      -nouser 查询无线属主的文件,即该文件的属主在/etc/passwd中不存在

      -newer file1 !file2 查找更改时间比file1新但是比文件file2旧的文件

      -type查询某一类型的文件 b(块设备文件)、d(目录文件)、c(字符设备文件)、p(管道文件)、l(符号链接文件)、f(普通文件)

      -size n[c] 查找文件长度为n的文件,带有c时,表示文件长度以字节计

      -depth 查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找

      -fstype 查找位于某一类型文件系统中的文件。

      -mount 在查找文件时不跨越文件系统mount点

      -follow 如果find命令遇到符号链接文件,就跟踪到链接所指向的文件

      -cpio  对匹配的文件使用cpio命令,将这些文件备份到磁带设备中

    3,不管当前路径是什么,如果想在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为pathname参数,~代表自己$HOME目录,使用文件名模式匹配文件的时候,需要用引号将文件名模式引起来

      根目录查询  $  find ~  -name "*.txt"

      当前目录查询  $  find . -name "[A-Z]*"  查询以大写字母开头的文件

      指定目录查询  $  find  /etc -name "host*"   查询以host开头的文件

    4,按照文件权限模式来查找文件,使用-perm,最好使用八进制的权限表示法

      find . -perm 755 -print   在当前目录查询文件权限位为755的文件

    5,希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找

      find /apps -name "/apps/bin" -prune -o -print

    6,按照文件属主查找文件

      find ~ -user dave -print 在$HOME目录查找属主为dave的文件

      find /etc -user dave -print  在/etc目录下查找属主为dave的文件

      查找属主已经被删除的文件,可以使用-nouser,使用时,不需要给出用户名 find /home -nouser -print

    7,用户组查询

      find /apps -group accts -print 查询属于accts用户组的文件

      find / -nogroup -print查询没有用户组的文件

    8,find / -mtime -5 -print  查询根目录下更改时间再5天以内的文件

      find /var/adm -mtime +3 -print 查找更改时间再3日以前的文件

    9,find /etc -type d -print  查询/etc目录下的所有目录

      find . ! -type d -print  查询目录以外的所有类型的文件

    10,find . -size  +1000000c -print    在当前目录查询长度大于1M的文件

      find /home/apache -size 100c -print  指定目录查找长度为100字节的文件

      find .size +10 -print   在当前目录查找长度超过10块的文件(一块等于512字节)

    11,find / -name "CON.FILE"  -depth -print 从根目录开始,查找名为CON.FILE的文件,它将首先匹配所有的文件,然后再进入子目录中查找

    12, find . -type f -exec ls -l {}   匹配当前目录下的普通文件,并使用ls -l 命令列出

    13,当在find中使用mv或者rm命令时,最好使用安全模式,它将在对每个匹配到文件进行操作前提示你。按y则删除,n则不删除

     14,在使用find命令的-exec选项处理匹配到的文件时,find会将所有匹配到的文件都一起传递给exec执行,但是有的系统对能够传递给exec的命令长度有限制,这样的话find运行几分钟后出现溢出错误,如参数列太长或参数列溢出。但是在find在使用xargs时,xargs先获取一部分,这样它可以先处理最先获取的一部分,然后再下一批。

      find / -type f -print | xargs file 查询根目录下所有普通文件,并测试它们分别属于哪类文件

      find /apps/audit -perm -7 -print | xargs chmod o-w 在指定目录下查询所有用户具有rwx权限的文件,并首先w权限

      

  • 相关阅读:
    面向对象的思维
    343. 整数拆分
    413. 等差数列划分
    303. 区域和检索
    62. 不同路径
    char类型与int类型相加
    mybatis里面resultmap的问题
    easyui的datagrid如何获取一个对象里面的成员对象里面的属性?
    ==和equls的区别
    泛型的使用思想
  • 原文地址:https://www.cnblogs.com/javadongx/p/find-name.html
Copyright © 2011-2022 走看看