Здесь описано три, но работает только wc.
Огласите весь скрипт пожалуйста.
Рассмеялся когда прошёл по Вашей ссылке.
Не только потому, что я от туда взял метод, но и потому, что там указано, что
с кириллицей данный метод не работает (Это если задача считать символы). Но для нашей цели выходит только этот метод и работает с кириллицей. Для кого то это мусор
, а для нас единственный, и как выяснилось, не предназначавшийся для кириллицы инструмент
.
Про код. Хотел выложить по завершении.
Смущали несколько моментов.
- Я не придерживаюсь BASH-стиля.
- В коде присутствует тупиковая ветвь алгоритма, ещё не убрал. С программированием на BASH знаком 4-е дня, точнее суток
(нужен зевающий смайлик). Не стал отлавливать почему код на выходе выдавал имена длинной 251..253 байта, хотя ожидалось 253..255. И переделал алгоритм на более "прямой","грубый", как мне казалось, и получил максимально возможный результат 254..255 байт.
- Хотел доделать "макро-управление" - чтобы было достаточно указать каталог источника и приёмника, а подкаталоги с заданным уровнем вложений и остальное делал бы код. А ещё лучше с GUI, но с ним пока ни минуты не знаком.
Комментарии старался написать сразу внятно, предполагая, что может кому пригодится.
#!/bin/bash
# ВНИМАНИЕ! код в разработке. генерирует не нужные для комфорта в жизни,
# всякие текстовые файлы и содержит балласт. Автор ещё не успел освоить системные
# темп-файлы и т.п "высокие" технологии BASH-е кодинга.
# Но советы, как сделать лучше - приветствуются.
IFS_B=$IFS # эти строки появились при поиске ошибки. Они не нужны.
IFS=$'\n'
# 2 ---------------------------------------------------------
# 2 находим файл с не допустимо длинным именем
# имена всех файлов найденных в каталоге сохраняем в разных вариантах в базах
echo "----- Начало всего ----"
set_size=$1 # требуемая, новая длина имени файла
post_size=$2 # коли-во символов в окончании имени остающихся на своих местах
if [[ $1 = '' ]]
then set_size=255
post_size=12
fi
# set_size=255
# post_size=12
mas_b='' # Массив базовых имён
mas_e='' # Массив расширений имён
mas_k='' # Массив имён без расширений
mas_s='' # Массив размеров имён
mas_old_new_file='' # Массив старых и новых имен файлов
mas_old_new_dir='' # Массив старых и новых имён директорий
post_name='' # временная переменная для размещения сохраняемых окончаний имён
if [[ $3 = '' ]]
then
post_post_dir="_files" # пост-пост-фикс для директорий HTML
fi
pos_post=0 # Позиция окончания имени файла. вычисляется автоматически.
ext_post='' # временная для расширений
ext_bait=0 # временная для кол-ва байт для расширения
right_bait=0 # временная переменная для точного подсчёта смещения от правого края имени
razdel='~-~' # символ(ы) разделитель между первой частью и окончанием имени
# продолжение следует...
А у Вас есть интерес в использовании?