Согласно этому ответу sed
может фильтровать строки по их длине:
sed -e '/.\{120\}/!d'
[…] Соответствует строкам, которые не содержат (как минимум) 120 символов (!
после выражения выполнить команду в строках, которые не соответствуют шаблону до него), и удалить их (т. е. не печатать их).
sed -i
работает на месте. Это приводит к следующему подходу:
cp -a original_dir/ modified_dir/
find modified_dir/ -type f -exec sed -i -e '/.\{80\}/!d' {} +
Теперь каждый файл из original_dir/
имеет свою модифицированную версию modified_dir/
.
В качестве альтернативы вы можете работать полностью внутри original_dir/
, говоря sed
сохранять старые файлы с суффиксом:
find original_dir/ -type f -exec sed -i.old -e '/.\{80\}/!d' {} +
В этом случае, если вы используете -i
вместо -i.old
, старые файлы будут потеряны.