最後の日に作成されたファイルのみを別のフォルダにコピーするスクリプトを作成しています。私が経験している問題は、私のスクリプトが一日を過ぎていないファイルだけでなく、ソースディレクトリ内のすべてのファイルをコピーすることです。
これが私が持っているものです:
find . -mtime -1 -exec cp --preserve --parents -a "{}" /somefolder \;
上記のコードはソースディレクトリのすべてのファイルをコピーします。 「cp」のすべてのパラメータを削除すると機能します。
find . -mtime -1 -exec cp "{}" /somefolder \;
上記のコードは必要な場合にのみ最新のファイルをコピーしますが、cpパラメータを使用して属性を保持する必要があります。
また、-execオプションが問題である可能性があると考えて、変数とforループを試してみました。
files="$(find -mtime -1)"
for file in "$files"
do
cp --parents --preserve -a file /somefolder
しかし、上記のforループは同じ問題を引き起こし、すべてのファイルがコピーされます。 $filesをechoすると、必要なファイルのみが表示されます。
どのように動作させることができますか?
ベストアンサー1
一部の実装には、ターゲットディレクトリを配置するオプションがcp
あります。-t
今後文書:
find . -mtime -1 -exec cp -a --parents -t /somefolder "{}" \+
これは後者を削除したことを-a
意味します。--preserve