前方深坑注意:find结合xargs

       xargs 和 find 算是一对死党。两者结合使用可以让任务变得更轻松。不过人们通常却是以一种错误的组合方式使用它们。例如:

       find . -name "*.txt" -print | xargs rm -f

       

       这样做很危险。有时可能会删除不必要删除的文件。我们没法预测分隔 find 命令输出结果的定界符究竟是什么('\n'或者' ',即便你先用find查找输出了想要操作的文件)。很多文件名中都可能会包含空格符(' '),因此 xargs 很可能会误认为它们是定界符(例如,hell text.txt会被xargs误解为hell和text.txt)。

       只要我们把 find 的输出作为 xargs 的输入,就必须将 -print0 与 find 结合使用,以字符null('\0')来分隔输出。

       用 find . -name "*.txt" -print0 | xargs -0 rm -f

       

       这样就可以删除所有的.txt文件。xargs -0 将 \0 作为输入定界符。

 

       字文摘自《 Linux Shell脚本攻略 (第2版) 》

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值