2013-08-03 55 views
-3

對於新手問題,我通常會查找如何執行此操作,但我處於一個可怕的情況,導致大文件丟失,所以我需要小心。僅當文件是.png圖像文件時才使用bash命令刪除目錄中的所有文件

任何想法?最好預先測試一下,謝謝!

+6

'RM -f * .png' ... – jgb

+3

在'的zsh ':'rm -f **/*。png'遞歸移除文件。 –

+1

您是否考慮過使用一些版本控制系統(比如'git')來處理更嚴重的(非圖像)文件? –

回答

3

我將假定這些文件沒有與文件類型相對應的擴展名(對於PNG文件爲.png),否則解決方案將很明顯。

如果是這種情況,你可以使用file的魔法。該命令將顯示當前目錄中的所有PNG文件和子目錄的任何:

$ find -exec bash -c "file -b --mime-type {} | grep -q ^image/png$" \; -print 

而這一次將其刪除:

$ find -exec bash -c "file -b --mime-type {} | grep -q ^image/png$" \; -delete 
1

這其實很簡單。

只需進入您的目錄。

和類型

rm *.png 

這將自動刪除與PNG擴展名的文件。

至於你擔心丟失數據,只需複製一份(或多份)目錄。備份重要數據總是很好的。你永遠不知道什麼時候可能需要它們!

2

既然你說它會導致大文件丟失,你可以先找到這些文件,只是爲了確保文件列表是正確的。

find YOUR_DIRECTORY -name '*.png' 

後您已確認的文件列表,只需添加-exec

find YOUR_DIRECTORY -name '*.png' -exec rm -f {} + 

P.S:這會做的子目錄搜索和查找/刪除它們。

+0

如果當前目錄中有.png文件,您的命令將中斷。 – jordanm

+0

您能否詳細說明一下?我使用這個命令很多,用於具有特定擴展名的文件中的grep。 – Varun

+0

未加引號的'* .png'在被傳遞給查找之前被shell解析。如果glob在shell中匹配,或者'nullglob'被啓用,你的命令將不起作用。行情在外殼中非常重要。 – jordanm

相關問題