繁体   English   中英

查找和复制文件和目录

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

对于空运行,在mkdircp之前插入echo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM