各サブフォルダの最新のディレクトリを維持しながら、サブフォルダを繰り返し削除する単一行を作成したいと思います。 find コマンドと rm コマンドをリンクすれば可能かもしれませんが、どうすればいいかわかりません。私はこれの一部が混乱しているので、mtimeを信じることができません。 3番目のレベルのすべてのディレクトリ名は、年、月、日、時(24時間)、分、秒などの日付形式で指定されます。
フォルダ構造の例
parent/a/2020-09-14_104423
parent/a/2020-08-14_230000
parent/a/2020-07-14_100000
parent/b/2020-07-14_140000
parent/b/2019-06-14_104423
parent/b/2019-05-14_104423
parent/c/2020-08-14_100000
parent/c/2019-06-14_174423
parent/c/2019-05-14_104423
...
結果
parent/a/2020-09-14_104423
parent/b/2020-07-14_140000
parent/c/2020-08-14_100000
...
答え1
ワークシート行では、説明されているディレクトリ名のみが考慮されます。
for dir in parent/*/; do printf "%s\n" "$dir"/*/ | sort -r | tail -n +2; done
削除するディレクトリが一覧表示され、
for dir in parent/*/; do printf "%s\n" "$dir"/*/ | sort -r | tail -n +2 | xargs rm -rf; done
削除されます。