簡體   English   中英

如何遞歸刪除 UNIX 目錄中的所有隱藏文件?

[英]How do you recursively delete all hidden files in a directory on UNIX?

我一直在尋找一段時間,但似乎無法得到一個簡潔的解決方案。 我有一台帶有文件夾的 Mac,我想清除所有隱藏的文件/目錄 - 任何隱藏的內容。 它曾經是一個包含大量 .metadata/.svn 內容的 Eclipse 工作區,我對所有這些內容都被刪除感到滿意。 我該怎么做(使用 shell 腳本、Applescript 等)。 非常感謝!

find . -name ".*" -print

我不知道 MAC 操作系統,但這就是您在大多數 *nix 環境中找到它們的方式。

find . -name ".*" -exec rm -rf {} \\;

擺脫它們......在刪除它們之前先進行查找並確保該列表是您想要的

第一個"." 表示來自您當前的目錄。 另請注意,第二個".*"可以更改為".svn*"或任何其他更具體的名稱; 上面的語法只是找到所有隱藏的文件,但你可以更有選擇性。 我一直使用它來刪除舊代碼中的所有 .svn 目錄。

您需要非常小心並測試您使用的任何命令,因為您可能不想刪除當前目錄 ( . )、父目錄 ( .. ) 或所有文件。

這應該只包括以點和 exclude 開頭的文件和目錄. ..

find . -mindepth 1 -name '.*' -delete
rm -rf `find . -type f -regex '.*/\.+.+'`

如果要刪除目錄,請將-type f更改為-type d

如果要刪除文件和目錄 remove -type f

find /path -iname ".*" -type f -delete ;

紅寶石(1.9+)

ruby -rfileutils -e 'Dir["**/.*"].each{|x| FileUtils.rm(x) if File.file?(x)}'

我發現這很有效(至少在 Linux 上的 Bash 中):

find . -wholename '*/.*' -type f | sed -n '/\/\.[^\/]\+$/p' | xargs rm

您可以根據自己的喜好調整sed調用中的正則表達式。

不過要小心:就我而言,我有很多名為.gitignore.gitkeep的隱藏文件必須保留。 請務必檢查列表以查看其中是否有您想要保留的內容。

我發現這個變體非常有用,它刪除了._ANYTHING文件(通常是垃圾文件或 tmp 文件):

find . -wholename '*/.*' -type f | sed -n '/\/\._[^\/]\+$/p' | xargs rm

我使用這個命令來刪除空目錄。 它從底部開始,一直到頂部。 因此,如果您引用當前路徑,它不會失敗。

find . -depth -type d -empty -exec rmdir {} \;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM