1つを除くすべてのサブフォルダを繰り返し削除します。

1つを除くすべてのサブフォルダを繰り返し削除します。

各サブフォルダの最新のディレクトリを維持しながら、サブフォルダを繰り返し削除する単一行を作成したいと思います。 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

削除されます。

関連情報