簡體   English   中英

當 subdir 不存在時,用於遞歸復制文件和文件夾的 Bash 腳本

[英]Bash script to recursively copy files and folders when subdir is not present

我在目錄樹下歸檔了很多項目,其中一些項目中有一個 .git 文件夾。

我想要做的是遞歸地將這些文件和目錄復制到一個新的目的地,保持當前的結構——除了那些包含 .git 文件夾的目錄,在這種情況下,腳本應該運行一個命令(比如“echo”,我稍后會更改它)后跟文件夾名稱,而不創建或復制它。

任何幫助將非常感激。

編輯:我會嘗試更好地解釋自己:我需要復制每個文件和目錄,除了那些包含 .git 的文件和目錄,這些文件和目錄應該被跳過,並且它們的路徑應該傳遞給另一個命令。 在這個例子中,路徑 a/b/c/d 及其子文件夾應該被完全跳過,a/b/c/d 應該使用 echo 顯示(為了簡潔,我稍后會用不同的命令替換它):

a
a/b
a/b/c
a/b/c/d/.git
a/b/c/d/e
a/b/c/d/f/g
a/b/c/e
a/b/d
a/c
b
b/c
...

IIUC,以下find one-liner 將完成這項工作:

find . -type d -mindepth 1 -maxdepth 1 -exec sh -c "test -e '{}/.git' && echo not copy '{}' || cp -r -- '{}' /tmp/copy-here " \;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM