2010-01-06 50 views
3

如何刪除具有撇號的文件夾中的所有文件?從Shell:刪除帶撇號的所有文件

例如:

Baird的/人的Tunnel.jpg

巴赫/的Birds.jpg

這ISN //'噸good.png

我想刪除所有這些文件,但是沒有撇號的任何文件保持不變,例如:

這good.jpg donotdelete.png

+1

哪個操作系統和殼呢? – 2010-01-06 19:33:09

+0

bash優先或sh很好 – kylex 2010-01-06 19:42:06

回答

3

在SH你可以做

rm *\'* 
+0

這不適用於給出的示例,因爲它們有空格。更好:對於* \'*中的fn;做rm「$ fn」;當然,完成 – 2010-01-08 11:20:10

1

可以使用find命令:

find . -name "*'*" -delete

正如@布萊恩在他的評論中指出,這將被刪除當前目錄中的所有文件和所有子目錄。如果你不想下降的目錄使用:

find . -name "*'*" -maxdepth 1 -delete

這使得find停留在當前目錄。

+2

,沒有任何其他參數,這將刪除當前目錄*和*所有子目錄中的所有文件。 – 2010-01-06 19:53:32

+0

這應該是'-maxdepth 1'('-depth'用於深度優先處理並且不需要參數) – 2010-01-07 03:20:26

+0

@Dennis出於某種原因,在我的Mac上'-depth 1'表現得像'-maxdepth 1' – 2010-01-07 07:50:36

0

GNU找到

find /path/ -type f -name "*[']*" -exec rm {} +;