查找并复制文件和目录

时间:2020-02-01 12:07:31

标签: linux bash

我正在尝试创建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

1 个答案:

答案 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,...)。

对于空运行,在echomkdir之前插入cp

相关问题