我有以下目录结构。
dirA/[fileA,someB,barC,fileD,someE,barF] dirB/[fileA,barC,someE]
我只想将 dirA 中已存在的文件复制到 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“