列表中包含空格的文件

时间:2011-06-24 02:16:23

标签: linux terminal grep ls

ls -1 | grep -v images | xargs rm -r

这不会删除其中包含空格的文件。我怎么能包括它们?有没有办法当我说ls它显示空格逃逸?

3 个答案:

答案 0 :(得分:4)

ls有 -Q 选项引用它们。然后你可以这样做:

ls -Q | grep -v images | xargs rm -r

答案 1 :(得分:2)

虽然您可以使用ls(1)进行此操作,但我认为更好的方法是使用find(1)代替:

find . \! -name '*images*' -exec rm -r {} \;

find . \! -name '*images*' -print0 | xargs -0 rm -r

我更喜欢-print0 | xargs -0方法,因为xargs(1)只会产生尽可能多的rm(1)命令。如果你只有200个文件,200个执行或一个执行没有太大的区别,但如果你有10,000个文件要删除,你真的宁愿执行rm(1)只有200或500次,而不是全部10,000次。

答案 2 :(得分:1)

这应该可以解决问题:

ls -1 | grep -v images | xargs -I {} rm -r "{}"