私は、昨日作成されたファイルのみを別のフォルダにコピーするスクリプトを作成しています。私が抱えている問題は、1日以内のファイルだけでなく、ソースディレクトリ内のすべてのファイルをコピーするスクリプトです。
これは私が持っているものです:
find . -mtime -1 -exec cp --preserve --parents -a "{}" /somefolder \;
上記のコードは、ソースディレクトリ内のすべてのファイルをコピーします。「cp」の引数をすべて削除すると、次のように機能します。
find . -mtime -1 -exec cp "{}" /somefolder \;
上記のコードは最新のファイルのみをコピーしますが、cp引数を使用して属性を保持する必要があります。
私は変数も試してみましたが、ループのために-execオプションが問題だったと思います:
files="$(find -mtime -1)"
for file in "$files"
do
cp --parents --preserve -a file /somefolder
ただし、上記のforループでは同じ問題が発生し、すべてのファイルがコピーされます。$ filesをエコーすると、必要なファイルのみが表示されます。
これを機能させるにはどうすればよいですか?
find /sourcefolder -type f -mtime -1 -exec cp -a "{}" /somefolder \;