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

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

dirA / [fileA, someB, barC, fileD, someE, barF] dirB / [fileA, barC, someE]

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

0
задан 14 October 2013 в 08:43

1 ответ

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

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

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

Другие вопросы по тегам:

Похожие вопросы: