2015-07-24 3 views
0

У меня есть структура каталоговКопирование нескольких файлов из одного каталога в нескольких других каталогах

Dir_1 
Dir_2 
Dir_3 
Source 

. В каталоге Source содержатся файлы File_1.txt и File_2.txt.

Я хочу, чтобы скопировать все файлы из каталога Source для всех остальных каталогов, в этом случае Dir_1, Dir_2 и Dir_3.

Для этого я использовал

for i in $(ls -d */ | grep -v 'Source'); do echo $i | xargs -n 1 cp ./Source/*; done 

. Я, однако, продолжаю получать сообщение

cp: target ‘5’ is not a directory 

Кажется cp имеет проблемы с именами каталогов, которые имеют пробелы в них. Как это разрешить (сохраняя пробелы в именах каталогов, очевидно)?

ответ

2

Использование find вы могли бы сделать что-то вроде этого:

find . -mindepth 1 -maxdepth 1 -type d ! -name Source -exec cp Source/*.txt {} \; 

Эта команда ищет в текущем каталоге для всех подкаталогов один уровень глубокой, за исключением Source и затем копирует текстовые файлы в каждой.

Надеюсь, что это поможет :)

+0

Упс! Хороший улов @ Кир! –

Смежные вопросы