我正在尝试创建bash脚本,该脚本将复制在过去24小时内创建或修改的文件。我知道这不是一个新问题,但是我找不到可以帮助我的答案。所以我有目录test
(它们的所有文件/目录都是在过去24小时内创建的)。
test/
file1.txt
file2.txt
dir/
file.txt
我如何以如下格式复制它们:
backup/
file1.txt
file2.txt
dir/
file.txt
因为我是否使用find test -type f -ctime -1 -exec cp -r {} backup \;
backup/
file.txt
file1.txt
file2.txt
或find test -exec -ctime -1 cp -r {} backup \;
:
backup/
file.txt
file1.txt
file2.txt
test/
file1.txt
file2.txt
dir/
file.txt
dir/
file.txt
答案 0 :(得分:1)
有点黑,可能由于bash而变慢,但这应该可以解决问题:
find test -type f -mtime -1 -exec bash -c '
src=("$@")
dst=("${@/#test/backup}")
mkdir -p "${dst[@]%/*}"
for i in "${!src[@]}"; do
cp "${src[i]}" "${dst[i]}"
done
' _ {} +
_
最后是$0
的占位符(您知道$@
扩展为$1
,$2
,...)。
对于空运行,在echo
和mkdir
之前插入cp
。