Linux shell脚本学习攻略笔记3

   今天继续上一次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目录中的所有文件的名称(路径)。

 

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值