Копировать файлы из нескольких подкаталогов в один и тот же целевой каталог

У нас почти 300 подкаталогов в главном каталоге. Теперь мы хотим скопировать все файлы из подкаталогов в одной команде в каталог назначения. Возможно ли это?

Main Directory
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg

Я обнаружил, что ниже команда может работать. Но трудно упомянуть каждое имя подкаталога в команде.

cp "Main Directory"/*/Subsubdirectory1/* destdir
0
задан 7 June 2020 в 03:51

2 ответа

Команда find является хорошим инструментом для такого рода операций, лучше всего сочетается с xargs . Попробуйте что-то вроде:

find "Main Directory" -type f -print0 | xargs -0 cp -t destdir

и взгляните на man find , man xargs и man cp для подробностей о том, как это работает.

0
ответ дан 19 June 2020 в 21:29

Таким образом, используя в рекурсивном режиме ( ** ):

shopt -s globstar

cp -l **/*.jpg 'Main Directory'/

Я использую переключатель -l , чтобы не тратить место на диске, он создает жесткие ссылки

0
ответ дан 19 June 2020 в 21:29

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

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