簡體   English   中英

Bash腳本以遞歸方式逐步瀏覽文件夾並刪除文件

[英]Bash script to recursively step through folders and delete files

任何人都可以給我一個bash腳本或一行命令我可以在linux上運行遞歸遍歷當前文件夾中的每個文件夾並刪除所有以'._'開頭的文件或目錄?

更改目錄到你想要的根目錄(或更改.並執行到該目錄):

find . -name "._*" -print0 | xargs -0 rm -rf

xargs允許您將多個參數傳遞給單個命令,因此它比使用find -exec語法更快。 此外,您可以在沒有|情況下運行一次 要查看它將刪除的文件,請確保它是安全的。

find . -name '._*' -exec rm -Rf {} \;

您可以將它們與相應的文件合並,而不是刪除AppleDouble文件。 你可以使用dot_clean

dot_clean - 將._ *文件與相應的本機文件合並。

對於每個目錄,dot_clean根據給定參數指定的規則遞歸地將所有._ *文件與其對應的本機文件合並。 默認情況下,如果._文件中也存在本機文件的屬性,則將使用最新的屬性。

如果沒有給出操作數,則輸出使用消息。 如果給出了多個目錄,則按照指定的順序合並目錄。

因為dot_clean默認遞歸工作,所以使用:

dot_clean <directory>

如果要關閉遞歸合並,請使用-f進行平面合並。

dot_clean -f <directory>

我前一段時間遇到過類似的問題(我假設您正在嘗試清理連接到Mac的驅動器,這會保存很多這些文件),所以我編寫了一個簡單的python腳本來刪除這些和其他無用的文件; 也許它對你有用:

http://github.com/houbysoft/short/blob/master/tidy

find /path -name "._*" -exec rm -fr "{}" +;

find . -name '.*' -delete

如果文件列表非常長,則會更短,性能更好。

暫無
暫無

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

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