GNU findがすべてのコンテンツを含む古いフォルダを削除したいと思います。私は-mtime
に精通していますが、ディレクトリのタイムスタンプは通常rsyncによって壊れています - 重要ではありません。幸いにも、タイムスタンプはyyyy-mm-dd
というディレクトリ名にエンコードされています。日付がyyyy-mm-ddとしてdirnameにエンコードされた日付より古いディレクトリを見つける方法
タイムスタンプではなくdirnameを使用して同じことを行うにはどうすればよいですか?最適な読み取り溶液が好ましい。
EDIT: 破損したタイムスタンプ:
drwxr-xr-x 2 user user 8192 Aug 23 11:12 2016-05-03
drwxr-xr-x 2 user user 8192 Aug 23 11:12 2016-05-04
drwxr-xr-x 2 user user 8192 Aug 23 11:12 2016-05-05
のdirs内のファイルは、正しいタイムスタンプを持っています。
アイデア:
find -mtime
でファイルを削除してから(第2ラウンド)の空のdirsをパージ。ほとんどの場合、-empty
はファイルにも適用されるため、1回のラウンドで両方を実行することはできません。アイデア:ディレクトリのタイムスタンプを(名前に応じて)1ラウンドで修正し、別のラウンドで
find -mtime
ですべてパージします。しかし、通常のrsyncはこれをもう一度破損します。 cronジョブは競合条件に合わせて調整する必要があります。アイデア:それは@xvan
での回答で提案されたとして、私は最善の方法を見つける助けを求める、(date -d "-150 days"
を使用して)yyyy-mm-dd
に-mtime +150
を変換して、フォルダ名にこの文字列を比較します。あなたは、bashの辞書式を使用することができ
これまでに試したことをお見せください。スタックオーバーフローはコード作成サービスではありませんが、少なくともあなた自身で問題を解決しようとすると、人々はあなたを助けてくれるでしょう。 [最小限で完全で検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)と[どのように良い質問をしますか?](http://stackoverflow.com/help)を参照してください。 /尋ねる方法)。 - 私はフォルダ名を読み、 '$ {name# - } 'を使って日、月、年に分割し、日付を比較します。 –