Как скопировать содержимое папки с заданным расширением в другую папку сохраняя исходную структуру каталога в linux
Как в Ubuntu скопировать файлы только определенного расширения, в другую папку сохраняя при этом структуру исходной папки? Ну например, есть папка корневая, у неё три подпапки, и там есть файлы разного расширения. Мне нужно чтобы все содержимое корневой папки вместе с тремя подпапками ии их содержимым скопировались в другую папку, но только файлы с заданным расширением. Типа:
Папка1
|
|
Файл1.h
Файл2.cpp
Папка2
|
|
Файл1.h
Файл2.cpp
После команды должно быть:
Папка1
|
|
Файл1.h
Папка2
|
|
Файл1.h
т.е. в новую папку скопировалось все содержимое старой папки только с расширением .h при этом структура каталога сохранилась. Содержимое подпапок тоже скопировалось, только то что имеет расширение .h
Это аналог команды mac:
gcp --parents
Ответы (1 шт):
$ tree dir1 -A
dir1
├── dir2
│ ├── dir3
│ │ ├── f1.cpp
│ │ └── f2.h
│ ├── f1.cpp
│ └── f2.h
├── f1.cpp
└── f2.h
2 directories, 6 files
$ for d in $(find ./dir1 -type d -printf "%p\n"); do [ -e $d ] && mkdir -p new_dir/$d; cp $d/*.h new_dir/$d/; done
$ tree new_dir/ -A
new_dir/
└── dir1
├── dir2
│ ├── dir3
│ │ └── f2.h
│ └── f2.h
└── f2.h
3 directories, 3 files
Можно воспользоваться cp --parents
https://unix.stackexchange.com/questions/83593/copy-specific-file-type-keeping-the-folder-structure