2012-09-26 76 views

回答

1

我不认为这是可能的一个扩展模式。您可以使用grep用于过滤,而不是:

ls -d '*foo*' | egrep -v '^foo|foo$' | xargs rm 

所以含fools名单的一切,然后egrep在开始/结束消除了与匹配的文件,最后xargs(在这种情况下rm)每运行一个命令余。

The dangerous thing about this technique是文件名可能包含特殊字符,如换行符或星号,所以使用风险自负!

6
rm ?*foo?* 

去除提供了含有foo的文件不存在之前和之后的至少一个字符,所以“foobar的”和“barfoo”不会被删除,而“barfoobar”将是。

作为一项预防措施,做到

ls ?*foo?*

首先要确保您没有删除错误的东西。并且非常小心不要意外地包含任何空格,因为rm?* foo?*几乎肯定是非常糟糕的。为了提供一些保护,包裹论点报价,从而

rm "?*foo?*" 
+0

foobarfoobarfoo – femchi

+1

ahh旧foobarfoobarfoo悖论:-)我会暂时假设OP会要删除它。 – pinoyyid

+0

:))))有没有解决这个问题的方法? – femchi

相关问题