在Linux中,如何刪除文件夾層次結構中嵌套的特定名稱的文件夾?如何刪除特定名稱的文件夾
下面的路徑在一個文件夾下,我想刪除名爲a
的所有文件夾。
1/2/3/a
1/2/3/b
10/20/30/a
10/20/30/b
100/200/300/a
100/200/300/b
我應該從父文件夾使用哪些Linux命令?
在Linux中,如何刪除文件夾層次結構中嵌套的特定名稱的文件夾?如何刪除特定名稱的文件夾
下面的路徑在一個文件夾下,我想刪除名爲a
的所有文件夾。
1/2/3/a
1/2/3/b
10/20/30/a
10/20/30/b
100/200/300/a
100/200/300/b
我應該從父文件夾使用哪些Linux命令?
如果目標目錄是空的,使用發現,只有目錄,過濾器過濾器按名稱,執行命令rmdir:
find -type d -name a -exec rmdir {} \;
如果你想遞歸地刪除它的內容,通過-delete
或-prune -exec rm -rf {} \;
更換-exec rmdir {} \;
。其他答案包括有關這些版本的詳細信息,也可以相信。
使用查找名爲「a」和執行rm以刪除按照你的意願的命名,具體如下:首先使用LS
find . -name a -exec rm -rf {} \;
測試列出:
find . -name a -exec ls {} \;
爲了確保這隻會刪除目錄而不是純文件,請使用「-type d」參數(如註釋中所示):
find . -name a -type d -exec rm -rf {} \;
「{}」是對每個找到的文件「a」的替換 - 通過替換對每個文件執行exec命令。
find ./ -name "FOLDERNAME" | xargs rm -Rf
應該這樣做。警告,如果您不小心將.
或/
泵入xargs rm -Rf
,您的整個計算機將被刪除,但沒有選項將其取消,需要重新安裝操作系統。
這一個適合我,thx! – DarkteK
哦,只是那個小小的風險。這就是全部?哈哈。非常感謝您的警告。我肯定會犯這種打字錯誤。 – TinkerTenorSoftwareGuy
這也適用 - 它會刪除所有名爲「a」和其內容的文件夾:
rm -rf `find -type d -name a`
這是唯一實際工作的人。 – Buffalo
@Buffalo,怎麼樣?這個defo的作品,但其他人也是如此。會驚訝地發現一個env在哪裏工作,但其他人沒有給出所有的答案基本上是'find/rm'。 – wmorrison365
@ wmorrison365因爲如果你做'找。 -name a -exec rm -rf {} \;',當它試圖進入那個目錄來尋找更多的項目時會發現崩潰,給你一個錯誤,比如'find:'1/2/3/a':No such文件或目錄「。 –
我有超過100個文件,如
log-12
log-123
log-34
....
以上的答案對我來說沒有工作
但下面的命令幫助了我。
find . -name "log-*" -exec rm -rf {} \;
我給-type
爲.
所以它刪除與log-
和rm -rf
開始刪除文件夾遞歸即使它有文件文件和文件夾。
find -type d -name foo -a -prune -exec rm -rf {} \;
其他的答案是缺少一個重要的:如果你想單獨的文件夾單獨
find -type d -name "log-*" -exec rm -rf {} \;
文件
find -type f -name "log-*" -exec rm -rf {} \;
要刪除名爲foo
的所有目錄,運行
事情:-prune
選項。如果沒有-prune
,GNU find將刪除名稱匹配的目錄,然後嘗試緩存到目錄中以查找更多匹配的目錄。 -prune
選項告訴它不遞歸到符合條件的目錄中。
還有一句:
"-exec rm -rf {} \;" can be replaced by "-delete"
find -type d -name __pycache__ -delete # GNU find
find . -type d -name __pycache__ -delete # POSIX find (e.g. Mac OS X)
查找路徑/到/的/文件夾-maxdepth 1個-name 「MY_ *」 型Ð-delete
你可能想增加一個 「型d」在那裏只需要一個文件匹配相同的名稱。 –
另外請注意,這將會產生類似'1/2/a/3/4'的情況,這可能不是有意的,所以建議先+1測試... – twalberg
reco'echo {}'先測試它,而不是'ls {}' – charneykaye