LINUX.ORG.RU
решено ФорумAdmin

Определить .gz файл без расширения

 ,


0

1

Здравствуйте! Столкнулся со следующей проблемой.. Немного предыстории. В свое время, был написан скрипт на php для своей cms, в котором есть несколько секций, которые упаковывают секцию текста в файл без расширения (part_1,part_2,part_n..).

$fp = fopen ($dir."/part_".$section, "w");
fwrite($fp,gzencode($section_text[$section],9));
Но в одном месте я пропустил функцию gzencode(). В связи с этим косяком, сейчас требуется привести всё к общему знаменателю.. Думал сделать по простому и после этого пройтись и удалить расширения.
find . -name "part_*" -type f -exec gzip -9 {} \;
Но в этом случае перепакуются и уже упакованные в gz файлы.. В линуксах я только недавно начал разбираться, посему моя извилина тут не поможет)) Подскажите, может можно как-то в find добавить проверку на тип содержимого в файле? Допустим, если text/plain или charset=utf-8, тогда упаковать. Или если application/gzip или charset=binary, тогда пропустить. Возможно, есть другой, более простой способ?


$ file /usr/share/man/man1/gzip.1.gz
/usr/share/man/man1/gzip.1.gz: gzip compressed data, from Unix, max compression
$
anonymous
()
Ответ на: комментарий от ritsufag

Благодарю! Сделал так.

gzip -9 $(find . -name "part_*" -type f -exec mimetype {} + | awk -F': +' '{if ($2 ~ /^text\/plain/) print $1}')
нормально отработает на ~400к файлах?

karnas
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.