Unixで特定の日付のファイルをあるパスから別のパスにコピーする方法

Unixで特定の日付のファイルをあるパスから別のパスにコピーする方法

特定の日付のファイルをあるディレクトリから別のディレクトリにコピーしたいと思います。誰でも私に使用するUnixコマンドを提案できますか?

答え1

これを行う最善の方法はコマンドを使用することですfind。ここには多くの方法があります。そのうちの2つを説明します。

1)相対時間間隔
このアプローチでは、正確な開始と終了のタイムスタンプを指定し、そのmodified/accessed/changed期間に属していないすべてのファイルをフィルタリングします。これを行うには、コマンドを使用しtouchて特定の名前でファイルを保存できます。タイムスタンプ。次の例では、に設定された2つのマーカー(および)を
作成します。次に、およびオプションを使用してファイルを選択します。timestamp_begin_filetimestamp_end_file3 HOURS AGO1 HOUR AGOnewerct! newerct最新それから3時間更新されないchangeそれから1時間です(この例では時間だけを見ています)。選択したすべてのファイルが$DESTINATION_PATHフォルダにコピーされます。

touch -t $(date -d '3 HOUR AGO' +%Y%m%d%H%M.%S) timestamp_begin_file
touch -t $(date -d '1 HOUR AGO' +%Y%m%d%H%M.%S) timestamp_end_file
find "$FOLDER" -newerct timestamp_begin_file ! -newermt timestamp_end_file -exec cp {} $DESTINATION_PATH \;

2)絶対時間間隔
newermtオプションを使用して、特定の日付間隔内に不要なファイルをフィルタリングできます。ここでは、当日変更されたファイルのみを選択してください2007-06-07

find . -type f -newermt 2007-06-07 ! -newermt 2007-06-08 -exec cp {} $DESTINATION_PATH \;  

私が言ったように、他の多くの選択肢があります(@Jaleksが提案したように-a/m/ctime、情報が不足しているので、どちらがあなたに適しているかを知る方法はありません)。

詳しくは時間フィルタfind、見てくださいマンページを探す

答え2

findなどのパラメータを含むマンページを表示したり、指定された-atime時間-mtime-ctimeアクセス、変更、または変更されたファイルを見つけたり、さらにこの-execオプションを使用してそのファイルをコピーしたりできます。

関連情報