Переместить изображения из подпапок в новые подпапки

У меня есть папка, состоящая из 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

(то есть: изображения перемещены)

Я видел несколько примеров сценариев, которые могут переместить все файлы в новую папку ( сценарий оболочки в переместить все файлы из подпапок в родительскую папку ) или те, которые могут перемещать только изображения ( Скрипт для перемещения изображений ), но я не нашел тот, который бы делал это, в то время как соблюдает подпункт дерево папок .

2
задан 13 April 2017 в 15:23

2 ответа

Можно попытаться использовать rsync:

rsync -av --include="*/"  --include='*.png' --exclude='*' parent1 parent2

это создает каталог parent2 и копирует все файлы с .png расширением со структурой подкаталога к нему.
объяснение

  • -v подробный для наблюдения, что скопировало
  • -a режима архивирования (подкаталоги копии с тем же владением, полномочия и т.д.)
  • - включают '* /' - включают = '*.png', включают .png конечные файлы, первая часть должна создать подкаталоги
  • - исключают = '*', исключают все другие файлы для большего количества информации, см. rsync страницу справочника
0
ответ дан 13 April 2017 в 15:23
  1. Копия parent1 к parent2
  2. Удаляет dat-файлы из parent2 подкаталогов
  3. , Удаляют png файлы из parent1 подкаталогов
$ cp -r parent1/ parent2
$ rm parent2/*/*.dat
$ rm parent1/*/*.png
0
ответ дан 13 April 2017 в 15:23

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

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