2016-06-19 272 views
0

我想刪除使用指定文件創建的所有文件和子目錄。我目前使用的命令來刪除文件和目錄shell腳本從linux目錄中刪除文件和子目錄

find . ! -name file.txt -type d -exec rm -r {} + #this is for sub directories 
find . ! -name file.txt -type f -exec rm -f {} + #this is for files 

當我運行這些命令兩次它刪除所有文件和子目錄,但我想刪除創建離開一個文件一次排序的所有文件和目錄。任何幫助是非常可觀的。 問候 Jitendra

+0

我不明白的問題。具體來說,「通過使用指定文件創建」和「一次排列一個文件」意味着什麼?你可以在你想要的命令之前和之後添加一個目錄/文件結構的例子嗎? –

+0

嗨本傑明,謝謝你的迴應。由於這些文件有一些SAR擴展,當它被提取時,它會創建一個文件夾或子目錄。我想一次刪除文件以及子目錄。但我不知道在同一時間點刪除父目錄中所有目錄中的一個文件 –

回答

0

GNU找到可以直接刪除文件和目錄:

find ! -name file.txt -delete 

它會給錯誤消息,因爲它不能刪除該目錄多達file.txt,但一切還是會被刪除。

如果你想保留這些文件file1.txtfile2.txtfile3.txt,連鎖的條件是這樣的:

find ! \(-name file1.txt -o -name file2.txt -o -name file3.txt \) -delete 
+0

感謝Sapanoia的回覆,假設我有一個Directory1。在那個目錄中,我有9個文件,其中有擴展名爲.tar的文件,如下所示; –

+0

如果你想排除所有'.tar'文件,使用如下命令:'find! -name'* .tar'-delete'。 – sapanoia

+0

嗨Sapanoia,我仍然無法解決可能我不會讓你清楚。非常遺憾。假設我在目錄中有幾個文件和子目錄。我想要刪除所有的子目錄,很少的文件名(file1,txt,file2.txt),但是'SAPCAR'是另一個我不想刪除的目錄中的文件名。你能推薦我該怎麼做。 –