天天看点

find -exec 与 xargs的区别与使用

我一个项目的代码上线,是先checkout出代码然后整体copy过去的,可以避免在线上直接svn拉代码时候影响服务。

其中有这么两句:

find . -type d -name ".svn" | xargs rm -rf
find script/ -type f -exec dos2unix -o {} \;
           

感觉xargs和exec很像,就学习了一下两者的使用和区别。

-exec

1.参数是一个一个传递的,传递一个参数执行一次rm

2.文件名有空格等特殊字符也能处理

-xargs

1.一次将参数传给命令,但可以使用-n控制参数个数

2.处理特殊文件名需要采用如下方式,重点在那个-0上:

find . -name “*.txt” -print0 |xargs -0 rm {}

技巧: find -print0 与 xargs -0 的结合避免文件名有特殊字符如空格,引号等无法处理:

find . -name “*.txt” -print0 |xargs -0 rm {}

继续阅读