2017-04-12 91 views
-1

我試圖創建一個Ubuntu的一個cronjob其中:Ubuntu的 - 刪除目錄,而忽略文件類型

  • 所有空目錄的應刪除
  • 如果dir是不是空的,那麼它應該,如果被刪除只有文件類型是TXT或CSV文件

目前我有:

find /path -depth rmdir {} \; 2>dev/null 

我需要什麼德爾吃只有txt或csv文件的文件夾?

我不想刪除所有txt或csv文件,只是那些不包含其他文件類型的文件夾。

附加例如: Dir1中

  • SubDir1

    • SubSubDir1

      • FILE.TXT

      • FILE.CSV

  • SubDir2

    • SubSubDir2

      • File.xml

SubSubDir1應該被刪除。由於SubDir1和Dir現在是空的,所以它們也應該被刪除。 SubSubDir2包含另一個文件類型,不應該被刪除。

+1

在試用任何此類腳本之前,請確保您有良好的備份。 –

+1

@PaulR感謝您的警告。備份已完成 – DasBen

+1

在您知道自己在做什麼之前,丟棄錯誤消息是非常不明智的。 – tripleee

回答

0

你可能喜歡的東西列出一個文件夾中的文件數:

find "$d" -maxdepth 1 -not -iname '*.csv' -a -not -iname '*.txt' | wc -l 

如果文件夾爲空或文件夾完全包含TXT和CSV文件,應當打印1.

而且列出文件夾,以便他們不要弄亂對方,如果你先抹掉家長:

find /path -depth -type d 

所有的一切,你可以達到你想要的東西有:

while read d 
do 
    if [ $(find "$d" -maxdepth 1 -not -iname '*.csv' -a -not -iname '*.txt' | wc -l) -eq 1 ] 
    then 
    rm -rf "$d" 
    fi 
done < <(find /path -depth -type d) 

但我還主張在某處進行檢查,以便您的cron不會在未經您的同意的情況下擦拭存儲。

+0

偉大的解決方案。非常感謝你! – DasBen

相關問題