[英]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.