月曜日から金曜日までファイルセットを作成しました。
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 find
(http://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
コマンドを使用すると、その日に生成されたファイルを識別し、ファイル名パターンを使用して検索をさらに制限できます。ファイルで使用してください-exec
。find
mv