您的位置:首页 > 运维架构 > Shell

Linux shell脚本学习攻略笔记3

2017-05-06 12:38 543 查看
   今天继续上一次find命令的内容,主要是find和 -exec 和xargs的结合和使用。

     (9) find 命令可以借助选项-exec与其他命令进行结合。- exec算得上是find最强大的特性之一。

比如我们要将某位用户全部文件的所有权更换为另一个用户(比如root),那么就可以用 -user找出root拥有的所有文件,然后用-exec更改所有权。(注意你必须以root用户的身份执行find命令才能进行所有权的更改)

      例1:

# find . -type f -user root -exec chown slynux {} \; 在这个命令中,{ }是一个与-exec选项搭配使用的特殊字符串。对于每一个匹配的文件,{ }会被替换成相应的文件名。例如,find命令找到两个文件test1.txt和text.txt,其所有者均为slynux,那么find就会执行:
 chown slynux {}  它会被解析为 chown slynux test1.txt 和 chown slynux test2.txt。

     例2:

         将给定目录中的所有C程序文件拼接起来写入单个文件all_c_files.txt。我们可以用find找到所有C文件,然后结合-exec 使用cat命令:

$ find . -type f -name "*.c" -exec cat {} \ > all_c_file.txt -exec 之后可以接任何命令。 { }表示一个匹配。对于任何匹配的文件名, { } 均会被改文件名所替换。
      例3:

     用下列命令将10天前的.txt文件复制到OLD目录中:

$ find -type f - name "*.txt" -mtime -10 -exec cp {} OLD \; -exec 能够同printf结合来生成有用的输出信息。例如
$ find . -type f -name "*.txt" -exec printf "Text file: %s\n" {} \;


        (10): 让find跳过特定的目录

        在搜索目录并执行某些操作时,有时为了提高性能,需要跳出一些子目录。将某些文件或目录从搜索过程中排除在外的技巧被称之为修建。其操作方法如下:

$ find . \( -name "*.git" prune\) -o \(-type f -print\)

# 代替直接使用 \( -type f -print\), 而是选择需要的过滤器以上命令打印出不包括在.git目录中的所有文件的名称(路径)。
 

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 脚本