文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell 编程--ch02 使用find和xargs

shell 编程--ch02 使用find和xargs

时间:2006-03-29  来源:alphix

ch02 使用find和xargs 内容提要
[*]find命令选项
[*]使用find命令不同选项的例子
[*]配合find使用xargs命令的例子
语法: find pathname -options [-print -exec -ok]
参数: pathname: find命令查找的目录路径. 用"."来表示当前路径,用"/"表示根目录.
      -print  : find命令对匹配的文件输出到标注输出
      -exec   : find命令对匹配的文件执行该参数所给出的shell命令.
      相应的命令格式"'command' {} \;",注意"{}"和"\;"之间的空格.
      -ok     : 和-exec的作用相同,只不过以一种更为安全的模式来执行参数所给出的shell
  命令,在执行每个命令之前,都给出提示,让用户来确定是否执行.
2.1 find命令选项
    主要选项:
    -name     : 按照文件名查找文件
    -perm     : 按照文件权限来查找文件
    -prune    : 使用这一选项已使find命令不在当前指定的目录中查找,如果同时使用-depth选项,
  那么-prune选项将被find命令忽略.
    -user     : 按照文件属主来查找文件
    -group    : 按文件所属的组来查找文件
    -mtime -n +n : 按照文件更改的时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件
  更改时间距现在n天以前.find命令还可有-atime和-ctime选项,但他们和-mtime选项
  像是,所以我在这里只介绍-mtime选项
    -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   : 查找某一文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中查找.
    -mount    : 在查找文件时不跨越文件系统的mount点.
    -follow   : 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
    -cpio     : 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中
2.1.1 使用name选项
    在自己的根目录$HOME中查找文件名符合*.txt的文件,
    % find ~ -name "*.txt" -print
    在当前目录中查找所有*.txt文件,
    % find . -name "*.txt" -print
    在当前目录及子目录中查找以一个大写开头的文件,
    % find . -name "[A-Z]*" -print
    在/etc目录中查找名为host开头的文件,
    % find /etc -name "host*" -print
2.1.2 使用perm选项
    在当前目录查找文件权限为755的文件,
    % find . -perm 755 -print
    如果希望在当前目录下查找所有用户都有可读、写、执行的的文件,在八进制数字前面加一个-.
    % find . -perm -007 -print
2.1.3 忽略某个目录
    在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用:
    % find /apps -name "/apps/bin" -prune -o -print
2.1.4 使用user和nouser选项
    在$HOME目录中查找属主为dave的文件,
    % find ~ -user dave -print
    在/etc目录下查找文件属主为uucp的文件
    % find /etc -usr uupc -print
    为了查找属主帐户已经被删除的文件,可以使用-nouser选项.这样就能够找到那些属主在/etc/passwd
    文件中没有的有效帐户的文件.
    % find /home -nouser -print
2.1.5 使用group和nogroup选项 
    用法同user和nouser.
2.1.6 按照更改时间查找
    使用mtime选项.
    在根目录下查找更改时间在5日内的文件,
    % find / -mtime -5 -print
    为了在/var/adm目录下查找在3日以前的文件
    % find /var/adm -mtime +3 -print
2.1.7 查找比某个文件新或旧的文件
    -newer 选项,一般形式为: newest_file_name ! oldest_file_name
    查找更改时间比文件age.awk新但比文件belts.awk旧的文件:
    % find . -newer age.awk ! -newer belts.awk -exec ls -l {} \;
2.1.8 使用选项type选项
    查找/etc目录下的所有目录:
    % find /etc -type d -print
    为了在当前目录下查找除目录以外的所有类型的文件:
    % find . ! -type d -print
    查找/etc下所有的符号链接
    % find /etc -type l -print
2.1.9 使用size选项
    在当前目录下查找文件长度大于1M字节的文件:
    % find . -size +1000000c -print
    在/home/apache目录下查找文件长度恰好为100字节的文件:
    % find /home/apache -size 100c -print
    在当前目录下查找长度超过10块的文件(一块为512字节):
    % find . -size +10 -print
2.1.10 使用depth选项
    从文件系统的根目录开始,查找一个名为CON.FILE的文件
    % find / -name "CON.FILE" -depth -print
2.1.11 使用mount选项
    在当前的文件系统中查找文件(不进入其他文件系统)
    % find . -name "*.XC" -mount -print
2.1.12 使用cpio选项
    使用cpio命令备份/etc、/home和/apps目录中的文件
    % cd /
    % find etc home apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0
2.1.13 使用exec和ok来执行shell命令
    exec选项后面跟随着所要执行的命令,然后是一对{},一个空格和一个\,最后是一个分号
    % find . -type f -exec ls -l {} \;
    在/log目录中查找更改时间在5日以前的文件并删除他们
    % find logs -type f -mtime +5 -exec rm {} \;
    另一种安全的方法:
    % find logs -type f -mtime +5 -ok rm {} \;
    < rm ... ./nets.LOG > ? y[n]
2.2 xargs
    xargs的作用是解决exec可能由于传递参数溢出和产生过多的进程使系统性能下降的问题,xargs只产生一个进程,并且每次读取一部分参数来执行命令,还可配相应的参数限制每次读取的参数长度.
    查找系统中的每一个文件,然后使用xargs命令来测试它们分别属于哪类文件:
    % find / -type f -print | xargs file
    /etc/protocols: English text
    /etc/securetty: ASCII text
    ...
    查找整个系统中内存信息转储文件(core dump),然后把结果保存到/tmp/core.log文件中
    % find . -name "core" -print | xargs echo "" > /tmp/core.log
    查找/apps/audit目录下所有用户具有读写和执行权限的文件,并收回相应的写权限
    % find /apps/audit -perm -7 -print | xargs chmod o-w
    用grep命令在所有的普通文件中搜索device这一词
    % find / -type f -print | xargs grep "device"
   
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载