最初にファイルのリストを一時的に保存し、ループを使用します。
find . -mtime -90 -ls >/tmp/copy.todo.txt
リストが大きすぎない場合は、
で読むことができます。for f in `cat /tmp/copy.todo.txt`;
do echo $f;
done
注:cat... を囲む引用符はバッククォートで、多くの場合、キーボードの左上隅にあります。
その後、echo コマンドを copy コマンドに置き換えることができます:
for f in `cat /tmp/copy.todo.txt`;
do cp $f /some/directory/
done
特定の日数に戻る以外に、正確な日時を選択することもできます:
cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER
上記は、2016 年 9 月 18 日 20:05:00 以降に作成されたディレクトリ内のすべてのファイルを FOLDER
にコピーします。 (今日の 3 か月前:)
find コマンドの記号に注意してください。 そうではない これ:'
これ、バッククォートです:`
日付の選択はこれで:'
名前にスペース、改行、タブ、またはワイルドカードが含まれるファイルがある場合は、Stéphane Chazelas のソリューションのいずれかを使用できます。 1 つ目は GNU 用で、2 つ目は GNU または一部の BSD 用です:
find . -type f -newermt '18 sep 2016 20:05:00' -exec cp -t FOLDER {} +
find . -type f -newermt '18 sep 2016 20:05:00' -exec sh -c 'cp "[email protected]" FOLDER' sh {} +
このコマンドを使用してください:
for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done
-exec
を使用 find
のオプション :
find . -mtime -90 -exec cp {} targetdir \;
-exec
find
によって返されたすべての結果をコピーします 指定したディレクトリ (targetdir
上記の例では)