У нас почти 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
Команда find
является хорошим инструментом для такого рода операций, лучше всего сочетается с xargs
.
Попробуйте что-то вроде:
find "Main Directory" -type f -print0 | xargs -0 cp -t destdir
и взгляните на man find
, man xargs
и man cp
для подробностей о том, как это работает.
Таким образом, используя bash в рекурсивном режиме ( **
):
shopt -s globstar
cp -l **/*.jpg 'Main Directory'/
Я использую переключатель -l
, чтобы не тратить место на диске, он создает жесткие ссылки