特定のタイムスタンプを持つファイルをコピーするコマンド

特定のタイムスタンプを持つファイルをコピーするコマンド

特定の日付に現在のディレクトリから別のディレクトリにファイルをコピーするには、コマンドが必要です。

-rw-r----- 1 schmidt schmidt 276423 set 03 10:31 'event01.csv'
-rw-r----- 1 schmidt schmidt 283861 set 03 10:34 'event02.csv'
-rw-r----- 1 schmidt schmidt 280644 set 03 10:40 'event03.csv'
-rw-r----- 1 schmidt schmidt 270234 set 03 03:26 'event04.csv'
-rw-r----- 1 schmidt schmidt 293488 set 12 06:43 'event05.csv'
-rw-r----- 1 schmidt schmidt 287417 set 12 07:48 'event06.csv'
-rw-r----- 1 schmidt schmidt 280519 set 12 10:19 'event07.csv'
-rw-r----- 1 schmidt schmidt 279631 set 12 19:43 'event08.csv'
-rw-r----- 1 schmidt schmidt 286578 set 12 15:15 'event09.csv'
-rw-r----- 1 schmidt schmidt 289830 set 12 18:41 'event10.csv'
-rw-r----- 1 schmidt schmidt 305209 set 19 05:58 'event11.csv'
-rw-r----- 1 schmidt schmidt 308275 set 19 06:20 'event12.csv'
-rw-r----- 1 schmidt schmidt 275015 set 19 14:40 'event13.csv'
-rw-r----- 1 schmidt schmidt 310610 set 19 15:40 'event14.csv'
-rw-r----- 1 schmidt schmidt 311466 set 19 15:41 'event15.csv'
-rw-r----- 1 schmidt schmidt 305241 set 19 15:51 'event16.csv'
-rw-r----- 1 schmidt schmidt 291699 set 19 15:56 'event17.csv'

たとえば、コマンドは「set 12」タイムスタンプを含むすべてのファイルをディレクトリにコピーする必要があります/home/12thsep/

どんなアイデアがありますか?

答え1

日付オプションから選択できます。find

find . -maxdepth 1 -type f -newerat '2019-09-19' ! -newerat '2019-09-20' -exec mv '{}' /home/12thsep \;

答え2

find正しいパラメータを使用できますmtime。たとえば、

mkdir <dest_path> && find <source path> -mtime -X -a -mtime +Y -exec mv {} <dest_path>/ \;

そのうち、Xは「明日の森」を、Yは「昨日」を表す。を使用すると、-a指定したfind2つの条件の間にANDが使用されます。引用するマンページを探す使用する構文の詳細。

答え3

これは次の方法で行うことができます。

ls -alF|grep "set 12" >> logxa00.txt

cat logxa00.txt| awk '{print $9}' > logxa01.txt

xargs -a logxa01.txt cp -p -t /home/12thsep/

答え4

この試み。ディレクトリを一覧表示し、日付スタンプを見つけるためにgrepを実行し、各ファイル名(パラメータ$ 9)から宛先ディレクトリにコピーします。追加の引用符は、名前にスペースを含むファイルをキャプチャします。

ls -al | grep -i "set 12" | awk -F' ' '{ system("cp \"" $9 "\" /home/12thsep") }'

今後、他のアプリケーションに合わせて簡単に変更できるはずです。

関連情報