2012-09-26 74 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

相關問題