我有以下目錄結構。
dirA/[fileA, someB, barC, fileD, someE, barF] dirB/[fileA, barC, someE]
我只想將 dirA 中已存在於 dirB 中的檔案複製到 dirB。我該如何進行這種選擇性複製?
答案1
例如,您可以使用帶有 -exec 選項的 find 命令。您可能會使用如下所示的語法(必須在 dirB 中運行,並注意它是遞歸的):
find ./ -type f -exec cp '../dirA/{}' ./ \;
-type f 告訴 find 僅考慮常規文件,-exec 表示:對每個文件執行以下命令。這 \;最後終止要運行的命令。 {} 是一個佔位符,由 find 替換為實際檔名。查看 find 的手冊頁以取得詳細資訊和其他用法範例。
以下是我的電腦上發生的情況:
desktop:~$ mkdir dirA
desktop:~$ mkdir dirB
desktop:~$ cd dirA
desktop:~/dirA$ touch foo bar this
desktop:~/dirA$ cd ..
desktop:~$ cd dirB
desktop:~/dirB$ touch bar this
desktop:~/dirB$ find ./ -type f -exec cp -v '../dirA/{}' ./ \;
»../dirA/./this“ -> »./this“
»../dirA/./bar“ -> »./bar“