タイムスタンプ(日付)に基づいてファイルを別のディレクトリにコピーする方法は?

タイムスタンプ(日付)に基づいてファイルを別のディレクトリにコピーする方法は?

dir1に次のファイルがあるとしましょう。

-rw-r--r--  1 user user  10240 Jul  2 11:54 10_data.txt
-rw-r--r--  1 user user  36048 Jul  4 11:56 95_data.txt
-rw-r--r--  1 user user  35634 Jul  7 11:56 01_data.txt
-rw-r--r--  1 user user  10630 Jul  9 11:56 19_data.txt
-rw-r--r--  1 user user  35476 Jul  9 11:57 93_data.txt

タイムスタンプ、特に日付(2、4、7、9)に基づいてこのファイルをコピーできるようにしたいです。

前任者:

copy 10_data.txt into a directory called 02
copy 19_data.txt into a directory called 09
copy 93_data.txt into a directory called 09

ターゲットディレクトリ(01、02、03など)がすでに存在するため、ディレクトリなどを作成する必要はありません。毎日の深夜以降にcronジョブとして実行する予定です。

findこのタスク(date +%d)や同様のタスクに使用できるものはありますか?

ありがとうございます!

ベストアンサー1

zshが利用可能な場合は、次のようにしてこれを実行できます。zstatモジュール:

zmodload zsh/stat
for f in *.txt
do
  cp -p -- "$f" $(zstat -F %d +mtime "$f")/
done

このzstat -F %d +mtimeコマンドにはフォーマットされた出力(-F %d)が必要です。月の日ファイル変更時間です。結果の10進範囲は01から31までで、コマンドのターゲットとして使用されますcp

おすすめ記事