Shell-Script

如何編寫 shell 腳本來展平目錄?

  • June 23, 2019

find我編寫了一個簡單的腳本來使用該命令從目錄中刪除無用的文件。

現在我想知道是否可以在腳本中添加行以展平目錄,但不能完全展平。

例如,如果我有一個名為的大目錄cleantarget

  • 清潔目標

    • 文件夾 A

      • 文件夾 A1
      • 文件夾 A2
    • 文件夾 B

      • 文件夾 B1

        • 文件夾 B11

我希望最終結果是:

  • 清潔目標

    • 文件夾 A
    • 文件夾 B

我不希望結果是:

  • 清潔目標

    • 我所有的文件

這個目錄有 16000 個文件,所以最好用腳本來做,這樣當目錄再次混亂時,我可以偶爾執行它。

我該怎麼做呢?

編輯:本質上,這意味著:我想要一個腳本,它將分別展平給定目標目錄中的每個子目錄。即,展平文件夾A,展平文件夾B,展平文件夾C,依此類推,直到展平其中的所有目錄cleanfolder

這些行應該有效:

find "/path/to/cleantarget" -maxdepth 1 -mindepth 1 -type d | while read line; do
   find "${line}" -mindepth 2 -type f -exec mv -t "${line}" -i '{}' +
   rm -r "${line}"/*/
done

這將展平文件夾 A 和文件夾 B,詢問您是否要覆蓋重複項,然後刪除文件夾。

來源:https ://unix.stackexchange.com/a/52816/284212

引用自:https://unix.stackexchange.com/questions/526394