
Моя структура папок выглядит следующим образом:
Photos
|
|---> 2015-08-23
|
|---> IMG_0019.JPG // keep
IMG_0019.JPG.json // toss
IMG_0020.JPG // keep
IMG_0020.JPG.json // toss
IMG_0021.JPG // keep
IMG_0021.JPG.json // toss
metadata.json // toss
2015-08-24
|
|---> IMG_0242.MP4 // keep
IMG_0242.MP4.json // toss
metadata.json // toss
2015-08-25
|
|---> IMG_0243.MOV // keep
IMG_0243.MOV.json // toss
IMG_0243(1).MOV // keep
IMG_0243(1).MOV.json // toss
IMG_0244.PNG // keep
IMG_0019.PNG.json // toss
metadata.json // toss
Это продолжается и продолжается. Моя цель — прийти к такой структуре папок
Photos
|
|--> IMG_0019.JPG
IMG_0020.JPG
IMG_0021.JPG
IMG_0242.MP4
IMG_0243.MOV
IMG_0243(1).MOV
IMG_0244.PNG
...
Я рассматривал возможность создания модифицированной версии этогостатья где я бы перебирал каждый каталог и выполнял регулярное выражение, чтобы выбрать только файл со значением. Что-то вроде:
// get a list of all directories
// loop through directories
// get all contents in directory
// loop through all contents in directory
// determine if file is of value (ie. MP4, PNG, MOV, JPG, etc.)
// move selected file out to parent directory
// remove directory
Любая помощь будет оценена по достоинству.
решение1
Из вашей структуры в ожидаемом результате вы просто хотите сохранить файлы, которые не заканчиваются на .json
. Это сделает это:
cd Photos
find . -type f ! -name *.json -exec mv {} . \; && rm -rf 2015*
Изнутри каталога Photos вы находите файлы, которые не заканчиваются на .json
, перемещаете их в .
или текущий каталог, а затем удаляете подкаталоги и файлы внутри, которые вам не нужны. Вы также можете использовать , rm -ri 2015*
чтобы он запрашивал вас перед удалением каждого каталога или запускать команды find
и rm
по отдельности на случай, если вы передумаете, прежде чем удалять остальные файлы и их каталоги.