结合find使用xargs

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

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

这样做很危险。有时可能会删除不必要删除的文件。我们没法预测分隔find命令输出结果的定界符究竟是'\n'还是' '。很多文件名中都可能会包含空格符,而xargs很可能会误认为它们是定界符(例如,hell text.txt会被xargs误认为hell和text.txt)。

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

用find匹配并列出所有的.txt文件,然后用xargs将这些文件删除:

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

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

你可能感兴趣的:(结合find使用xargs)