[英]find and copy files and directories
我正在尝试创建 bash 脚本,该脚本将复制过去 24 小时内创建或修改的文件。 我知道这不是一个新问题,但我找不到可以帮助我的答案。 所以我有 dir 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
有点hackish,可能由于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
,...)。
对于空运行,在mkdir
和cp
之前插入echo
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.