簡體   English   中英

Unix shell 循環檢查一個目錄是否存在於多個目錄中

[英]Unix shell loop to check if a directory exists inside multiple directories

我有這樣的文件夾結構:

/home/
   /folder1/
      /backup/
   /folder2/
      /backup/
   /folder3/
   /folder4/
      /backup/
   /folder5/

(如您所見,並非所有目錄“文件夾”都有目錄“備份”)

我需要檢查目錄“備份”是否存在於“文件夾”中並將其刪除。

我正在使用這個命令:

for d in /home/* ; 
    do [ -d "$d/backup" ]
    && echo "/backup exists in $d" 
    && rm -rf "$d/backup" 
    && echo  "/backup deleted in $d" ; 
done

但它不起作用。 請幫忙。

find . -type d -name "backup" -delete -print

顯然,備份目錄下的所有內容都會丟失。

這將遞歸到您的目錄中。 如果您需要將其限制為僅第一級,您可以這樣做:

find . -maxdepth 1 -type d -name "backup" -delete -print

這兩個命令都將打印已刪除的目錄。 沒有 output == 沒有找到目錄,什么也沒做。

最后,您希望避免像您嘗試的那樣在文件或目錄名稱上循環,因為您的文件或目錄名稱中可能包含空格。 此處提供完整的討論和解決方案: https://mywiki.wooledge.org/BashFAQ/001

暫無
暫無

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

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