У меня есть папка, состоящая из M
нескольких подпапок, каждая из которых содержит несколько текстовых файлов и N
изображений (*.png
)
Вот как выглядит дерево:
/parent/
/sub-folder1/
/data1.dat
/data2.dat
/image1.png
/image2.png
...
/imageN.png
/sub-folder2/
/data1.dat
/data2.dat
/image1.png
/image2.png
...
/imageN.png
...
/sub-folderM/
/data1.dat
/data2.dat
/image1.png
/image2.png
...
/imageN.png
обратите внимание, что все изображения в каждой подпапке имеют одинаковые имена (т. Е. image1.png, ..., imageN.png
)
. Мне нужно переместить только изображения в новая родительская папка (скажем, parent2
) при репликации структуры подпапок. После перемещения новая родительская папка должна выглядеть следующим образом:
/parent2/
/sub-folder1/
/image1.png
/image2.png
...
/imageN.png
/sub-folder2/
/image1.png
/image2.png
...
/imageN.png
...
/sub-folderM/
/image1.png
/image2.png
...
/imageN.png
(то есть: только изображения с одинаковой структурой подпапок)
и исходная папка parent
должен выглядеть так:
/parent/
/sub-folder1/
/data1.dat
/data2.dat
/sub-folder2/
/data1.dat
/data2.dat
...
/sub-folderM/
/data1.dat
/data2.dat
(то есть: изображения перемещены)
Я видел несколько примеров сценариев, которые могут переместить все файлы в новую папку ( сценарий оболочки в переместить все файлы из подпапок в родительскую папку ) или те, которые могут перемещать только изображения ( Скрипт для перемещения изображений ), но я не нашел тот, который бы делал это, в то время как соблюдает подпункт дерево папок .
Можно попытаться использовать rsync:
rsync -av --include="*/" --include='*.png' --exclude='*' parent1 parent2
это создает каталог parent2 и копирует все файлы с .png расширением со структурой подкаталога к нему.
объяснение
$ cp -r parent1/ parent2 $ rm parent2/*/*.dat $ rm parent1/*/*.png