今日より1年古いファイルを移動するソリューションを探しています。ログパーティションがいっぱいになりましたが、削除できません。彼らは長い間必要とされています。とにかく私が思いついた1つの解決策は:
find /sourcedirectory -mtime 365 -exec mv "{}" /destination/directory/ \;
これはうまくいくでしょうか? 「-mtime 365」と尋ねると、1年前のファイルが今日から新しい場所に移動されますか?
ありがとうございました!
あなたはほぼ正しいです。 -mtime 365
は、完全に365日経過したすべてのファイルになります。 365日以上経過したものが必要です。つまり、この+
のような数字の前に-mtime +365
を追加します。
-maxdepth 1
フラグにも興味があるかもしれません。これにより、サブディレクトリ内のアイテムを移動できなくなります。
ディレクトリではなくファイルのみを移動することを確認する場合は、-type f
を行に追加します。
行の終わりに\;
を追加して、find
が実行中のコマンドの終わりであることを認識できるようにします。
したがって、行は次のようになります。
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec mv "{}" /destination/directory/ \;
安全のために、mvの代わりにls -lを実行することから始めます。これにより、mvで次のように再実行する前に、必要なファイルが正確に取得されていることを事前に確認できます。
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec ls -l {} \;
上記のソリューションを使用するときは注意してください、私はそれらを使用し、すべてのサブフォルダー内のすべてのファイルを移動しました!!!!
このコマンドは、/ sourceディレクトリ内のすべてのファイルと、sourceディレクトリの下のすべてのサブフォルダーを移動します。
find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;
代わりに、/ sourcedirectory内のファイルのみにオプション-maxdepth 1を使用してください。
find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
このコマンドを使用して、ディレクトリではなくファイルのみを検索し、ファイルが1年以上古いことを指定できます。
find /sourcedirectory -type f -mtime +365 -exec mv "{}" /destination/directory/ \;
$ find /sourcedirectory/ -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
find: missing argument to `-exec'
正しいのは、末尾のスラッシュを/sourcedirectory/
から削除することです。
$ find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
ファイルが頻繁にアクセスされる場合は、以下のコマンドをatimeで使用できます
find /sourcedirectory -type f -atime +365 -exec mv -t /destinationdirectory {} +;