Shell-Script
如何編寫 shell 腳本來展平目錄?
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,詢問您是否要覆蓋重複項,然後刪除文件夾。