ls -1 | grep -v images | xargs rm -r
这不会删除其中包含空格的文件。我怎么能包括它们?有没有办法当我说ls它显示空格逃逸?
答案 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 "{}"