我一个项目的代码上线,是先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 {}
原文地址:http://blog.csdn.net/linux4fun/article/details/44856615