最後に生成されたアーカイブログを保持することを除いて、アーカイブログ全体を削除したいと思います。

最後に生成されたアーカイブログを保持することを除いて、アーカイブログ全体を削除したいと思います。

すべてのアーカイブログを削除し、最後に生成されたアーカイブログのみを維持したいと思います。

現在、フル/すべてのアーカイブログを削除し、ディレクトリ自体を消去する次のコマンドを使用しています。

find . -name "dbf*" -mtime +0 -exec rm -rf {} \;

しかし、最後に生成されたアーカイブログを維持したいと思います。どうすればいいですか?同じ結果を得るにはどのコマンドを使用する必要がありますか?

ベストアンサー1

1日に1つのファイルのみが生成されることがわからない場合(この場合は失敗したコマンドが機能します)、ファイルfindの日付/時刻スタンプとファイル名の組み合わせの出力をパイプし、日付/時刻スタンプを分割して(再)除外する必要がありますsort。します。結果名を入力する前の最後の行:sedsedxargs -0 rm

find . -type f -name "dbf*" -printf "%T@:%p\0" | sort -z | sed -z '$d' | \
       sed -z 's/[0-9\.]*://' | xargs -0 rm

ファイル名は./2番目のファイル名で始まるため、sed一致が多すぎても最初の「:」のみが一致します(-printf "%T@:%p"このような結果を提供します 1424765805.0206990940:./dbf_xyz)。

これは、チェーン全体がNULで終わる「行」を使用するため、スペースと改行文字を含むファイル名にも当てはまります。

おすすめ記事