Как скопировать подмножество файлов из определенной папки

Как скопировать подмножество файлов из определенной папки

У меня следующая структура каталогов.

dirA/[файлA, некстB, barC, файлD, некстE, barF] dirB/[файлA, barC, некстE]

Я хочу скопировать только те файлы из dirA в dirB, которые уже присутствуют в dirB. Как мне сделать это выборочное копирование?

решение1

Например, вы можете использовать команду find с опцией -exec. Вероятно, вы бы использовали синтаксис вроде следующего (должен быть запущен в dirB, и учтите, что он рекурсивный):

find ./ -type f -exec cp '../dirA/{}' ./ \;

-type f сообщает find, что нужно учитывать только обычные файлы, -exec говорит: выполнить следующую команду для каждого файла. \; в конце завершает команду, которую нужно выполнить. {} — это заполнитель, который find заменяет фактическим именем файла. Ознакомьтесь с man-страницей 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“

Связанный контент