すべてのアーカイブログを削除し、最後に生成されたアーカイブログのみを維持したいと思います。
現在、フル/すべてのアーカイブログを削除し、ディレクトリ自体を消去する次のコマンドを使用しています。
find . -name "dbf*" -mtime +0 -exec rm -rf {} \;
しかし、最後に生成されたアーカイブログを維持したいと思います。どうすればいいですか?同じ結果を得るにはどのコマンドを使用する必要がありますか?
ベストアンサー1
1日に1つのファイルのみが生成されることがわからない場合(この場合は失敗したコマンドが機能します)、ファイルfind
の日付/時刻スタンプとファイル名の組み合わせの出力をパイプし、日付/時刻スタンプを分割して(再)除外する必要がありますsort
。します。結果名を入力する前の最後の行:sed
sed
xargs -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で終わる「行」を使用するため、スペースと改行文字を含むファイル名にも当てはまります。