30日後のフォルダを別のフォルダに移動

30日後のフォルダを別のフォルダに移動

各フォルダには、1000個の画像を含む毎日のフォルダを含むディレクトリがあります。 30日を過ぎたフォルダをアーカイブフォルダに保存したいと思います。

私はこれを試しましたが、すべてがめちゃくちゃになり、すべての画像ファイルを日付フォルダではなくアーカイブフォルダにコピーしました。

sudo find /home/lanein1/AshtonRPOUT/ -type f -mtime +30 -exec mv '{}' /home/lanein1/AshtonRPOUT/Arch/ \;

ここに画像の説明を入力してください。 私のスクリプトは、すべての画像を別々のフォルダの代わりにアーチにコピーします。

ここに画像の説明を入力してください。

答え1

ディレクトリを探したいのですが、通常のファイル(f)を探しています。dディレクトリ検索の場合:

sudo find /home/lanein1/AshtonRPOUT/ -type d -mtime +30 -exec mv '{}' /home/lanein1/AshtonRPOUT/Arch/ \;

答え2

過去30日間に変更されたすべてのディレクトリを移動し、/home/lanein1/AshtonRPOUT/最上位ディレクトリ(/home/lanein1/AshtonRPOUT/)を変更したくない場合は、次のようにします。

find /home/lanein1/AshtonRPOUT/ -mindepth 1 -maxdepth 1 -type d \
    ! -path '/home/lanein1/AshtonRPOUT/Arch*' -mtime +30 \
    -exec mv {} /home/lanein1/AshtonRPOUT/Arch/ ';' -prune

ここで注意すべき点:

  • ファイルではなくディレクトリを探しているので-type d

  • ターゲットディレクトリは検索されたディレクトリセットに含まれているため、パスを回避するためにfind使用します。! -path '...'

  • 最上位ディレクトリを移動したくないので、-mindepth 1start findを追加します。下にその道。また、サブフォルダに入らないように-maxdepth 1強制してくださいfind(サブフォルダがあり、ここにはファイルのみが含まれていると言われました)。

  • (ここでは使用するので必要ありませ-maxdepth 1んが…)ディレクトリを移動すると、ディレクトリ構造が変更されます。だから-prune最後に追加します。これにより、考慮されるディレクトリのリストから移動されたパスが削除されますfind。これがなければ、find存在しないディレクトリに入ろうとします(ディレクトリを見つけて移動した場合)。

関連情報