Сжатие файлов, имена файлов которых совпадают рекурсивно по каталогам - PullRequest
0 голосов
/ 11 апреля 2019

Рассмотрим файловую систему примерно так:

folderA
   - one.png
   - two.png
   - three.png

folderB
   - one.png
   - two.png
   - three.png

folderC
   - one.png
   - two.png
   - three.png

Я хочу сжать все файлы .png, которые соответствуют one.png, в файл .zip с именем one.zip. Важно отметить, что он должен искать только имена файлов, а не заглядывать внутрь файлов, потому что код, который генерирует эти .png, существует, и я не хочу сопоставлять что-либо, что не является фактическим .png.

Я пробовал искать, но по ключевым словам, которые я знаю, я получаю много результатов о поиске в .zip-файле.

Я работаю в OSX Mojave. Буду признателен за любую помощь!

Спасибо, Adhi

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Ну, вы можете сойти с ума и поместить все файлы one.png в one.zip, все файлы two.png в two.zip и т. Д .:

for file in $( find -name \*.png | sed 's:.*/::' | sort -u ); do
    zip $(basename $file .png).zip $( find -name $file )
done
0 голосов
/ 11 апреля 2019
base='one'
mapfile -t files < <(find . -name "${base}.png")
zip "${base}.zip" "${files[@]}"
...