2016-04-12 108 views
0

我想刪除一個目錄中的一些文件,但「的.gitignore」的文件,我試試這個命令,但得到一個錯誤刪除文件排除文件

[[email protected] lw2]$ find ./web/assets/* ! -name '.gitignore' | xargs rm -rf 
find: `./web/assets/*': No such file or directory 

我再試一次「」字符,但我得到另一個錯誤:

[[email protected] lw2]$ find ./web/assets/. ! -name '.gitignore' | xargs rm -rf 
rm: cannot remove directory: `./web/assets/.' 

請告訴我有什麼不對這些命令 謝謝!

+0

錯誤信息如何不清楚? 'find'返回當前目錄的名字,但不能被刪除。用'rm -rf'你可以刪除任何包含'.gitignore'文件的目錄。 – tripleee

回答

0

您可以通過文件,以避免刪除整個目錄中刪除文件,因此實現不刪除.gitignore

試試這個:

find ./web/assets/* -type f ! -name '.gitignore' -exec rm {} \; 
+0

這留下了一堆空目錄。 – tripleee

+0

如果您看到問題所在,則可以看到他要求在目錄中刪除文件,並且不要刪除目錄。 –

+1

我不完全確定。爲什麼他們會使用'rm -rf'?無論如何,在這種情況下,在'-type d'中傳遞的簡單明顯的解決方法很容易避免錯誤消息以及其他許多錯誤消息。 – tripleee

0

試試這個(的文件):

[[email protected] lw2]$ find /full/path/to/directory/ -type f ! -iname ".gitignore" -exec rm -fv {} \; 

或這個(對於目錄):

[[email protected] lw2]$ find /full/path/to/directory/ -type d ! -iname ".gitignore" -exec rm -fv {} \; 

注意:最好先使用臨時目錄測試命令,然後運行主命令。