回答:
あなたはほぼ正しい。-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 {} \;
exec
ステートメントの終わりを意味します。のmanページをご覧くださいfind
。
上記のソリューションを使用するときは注意してください、私はそれらを使用し、すべてのサブフォルダー内のすべてのファイルを移動することになりました!!!!
このコマンドは、/ sourceディレクトリ内のすべてのファイルとソースディレクトリの下のすべてのサブフォルダーを移動します。
find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;
代わりに、/ sourcedirectory内のファイルのみにオプション-maxdepth 1を使用します
find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
-type f
ます。代わりに、これはサブフォルダーは移動しますが、サブフォルダーの内容はサブフォルダーから移動するのではなく、サブフォルダーに残るという意味ですか?
ファイルが頻繁にアクセスされる場合、atimeで以下のコマンドを使用できます。
find /sourcedirectory -type f -atime +365 -exec mv -t /destinationdirectory {} +;
$ 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/ \;
find: missing argument
エラーを再現することはできませんでしたが、末尾のスラッシュを削除すること/sourcedirectory
は正しいことに同意します。
mtime
は修正時間であることに留意してください(これはおそらくあなたが望むもののように聞こえますが、ほとんどの場合そうです)。これらのログが頻繁に読み取られる/参照される場合は、使用することができます-atime
(最終アクセス時間)。