作成日に基づいてファイルを別のフォルダに移動する

作成日に基づいてファイルを別のフォルダに移動する

月曜日から金曜日までファイルセットを作成しました。

a -- > 08/20
a1---> 08/21
a2---> 08/21
a3---> 08/21
a4---> 08/22
a5 --> 08/23

08/21ファイルを別のフォルダに移動しました。

どうすればいいですか?

答え1

ファイルの変更時間が保存されているとします(ファイルが作成された後は変更されません)。その後、findコマンドとオプションを使用して、データが数日前に最後に変更されたファイルを-mtime検索できます。Xしたがって、48時間前に作成された現在の作業ディレクトリー内のすべてのファイルを検索するには、次のようにします。

find ./ -type f -mtime 2

別のディレクトリに移動

find ./ -type f -mtime 2 -exec mv {} DEST_DIR/ \;

また、現在の日付とファイルを要求した日付の間の日数を見積もることもできます(この場合は22日)。

DAY_CUR="`date +%d`"
DAY_REQ=22
DAY_DIF=$((DAY_CUR - DAY_REQ))
    
find ./ -type f -mtime $DAY_DIF -exec mv {} DEST_DIR/ \;

コードは、2日間で2ヶ月の異なるケースを処理できないため、完璧ではありませんが、進行方法を示しています。

答え2

したがって、プロパティに基づいてファイルを移動しようとします。これは、ファイルを識別または「検索」してから結果を別のフォルダに移動する必要があることを意味します。

検索ユーティリティは素晴らしい仕事をします:-)

find引数なしで呼び出すと、フォルダ全体の内容が一覧表示されます。その後、さまざまなフィルタ条件を指定できます。完全なリストを見るにはman findhttp://unixhelp.ed.ac.uk/CGI/man-cgi?find)。

ここにいくつかの例があります。

  [..]
   -mmin n
      File's data was last modified n minutes ago.

   -mtime n
      File's  data was last modified n*24 hours ago.  See the comments
      for -atime to understand how rounding affects the interpretation
      of file modification times.

   -newer file
      File was modified more recently than file.  If file  is  a  sym-
      bolic  link and the -H option or the -L option is in effect, the
      modification time of the file it points to is always used.
  [..]

-execその後、を使用して呼び出し、現在のファイルのプレースホルダとしてmv使用できます。{}

例: find /some/path/ -mtime +4 -exec mv {} /some/other/path/

専門家のヒント:正しいファイルを受け取ったことを確認するためにfind電話する必要はありません。 :-)-exec

答え3

このfindコマンドを使用すると、その日に生成されたファイルを識別し、ファイル名パターンを使用して検索をさらに制限できます。ファイルで使用してください-execfindmv

関連情報