簡體   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