日より古いサブディレクトリのファイルを移動するには?

日より古いサブディレクトリのファイルを移動するには?

基本的に私はこれをしたい:

mv /path/sourcefolder/* /path/destinationfolder/

ただし、90日より古いファイルにのみ適用されます。

MVは、必要に応じてソースパスのサブディレクトリ構造をコピーする必要があります。 MVは90日を過ぎたファイルのみを移動します。

そのようなことはうまくいきません。ソースサブディレクトリ構造に関係なく、すべてのファイルを同じターゲットフォルダに配置します。

find -type f -mtime +600 -exec mv '{}' /storage/9016-4EF8/WhatsApp/Media/ \;

ベストアンサー1

を使用すると、zsh次のことができます。

dest=/storage/9016-4EF8/WhatsApp/Media
cd /path/sourcefolder &&
  for f (**/*(ND.m+89)) {
    mkdir -p -- $dest/$f:h &&
      mv -- $f $dest/$f
  }

zmodload zsh/files.mvmkdir

またはPOSIXとして:

cd /path/sourcefolder &&
  dest=/storage/9016-4EF8/WhatsApp/Media find . -type f -mtime +89 -exec sh -c '
     for f do
       mkdir -p -- "$dest/${f%/*}" &&
         mv -- "$f" "$dest/$f"
     done' sh {} +

(注:-mtime -8989日未満のファイル、-mtime 8989〜90日間のファイル、90日以上(または少なくとも開始時-mtime +89)のファイルを選択するには、ここを参照してください。findその間隔内にDSTクロックが変更されているかどうかにかかわらず、24時間期間を示します))。

いずれにせよ、mv外部メディアに元のファイルをコピーするときに元のファイルのほとんどのプロパティを保存しようとしていますが、ディレクトリ自体はデフォルトの所有権、権限、および属性を持つ新しいディレクトリで作成されます(問題になる可能性が低い) Unixに似たファイルシステムでも、ターゲットフォルダの音が悪くなります。

おすすめ記事