Как к массе переименовывают файлы с плохо сформированной нумерацией?

Вы пытаетесь считать каждую строку как символ?

Имейте эти 25 записей быть в файле под названием stocks.txt. Затем используйте следующий сценарий, чтобы выполнить итерации по каждой строке в файле запасов и обработать символ с помощью функции запаса, объявленной в том же сценарии:

while read symbol ; do 
  stock $symbol >> /home/user/Desktop/stockquote.txt 
done < stocks.txt
3
13.03.2015, 13:31
3 ответа

На Debian, Ubuntu и производные, вы можете использовать Rename Perl Script :

rename 's/(?<=-)([0-9]+)/sprintf "%03d", $1/e' prefix-*.ext

Некоторые системы могут иметь эту команду, установленную как Perment или Perl-Rename . Обратите внимание, что это не в Rename Utility Util-linux Suite, который не обеспечивает простого способа сделать это.

В ZSH вы можете использовать ZMV , чтобы переименовать и флаг расширения параметров L на подушку с нулями.

autoload -U zmv
zmv '(prefix-)(*)(.ext)' '$1${(l:3::0:)2}$3'

Вы также можете сделать это с простой петлей оболочки. Оболочки не имеют хороших строковых манипуляционных конструкций; Один из способов накладки с нулями состоит в том, чтобы добавить 1000 и полосу от ведущих 1 .

for x in prefix-*.ext; do
  n=${x%.ext}; n=${x##*-}; n=$((n+1000))
  mv "$x" "${x%-*.ext}${n#1}${x##*-}"
done

Еще один способ состоит в том, чтобы вызвать утилиту Printf .

for x in prefix-*.ext; do
  n=${x%.ext}; n=${x##*-}
  mv "$x" "${x%-*.ext}$(printf %03d "$n")${x##*-}"
done
5
27.01.2020, 21:12

Возможно, что-то вроде этого (непроверенного)

for n in *.ext; do
    echo mv "$n" \
      "prefix-$(printf %03d "$(basename ${n#prefix-} .ext)").ext"
done

удалить эхо , чтобы выполнить фактическое переименование.

Примечание. Вы должны быть в каталоге, где файлы предназначены для этого метода; Работа с пафорами, которые содержат карта каталога, более сложнее.

1
27.01.2020, 21:12
for file in prefix-*.ext
do
    num=`echo $file | sed 's/prefix-\(.*\).ext/\1/'`
    [ $num -lt 100 ] && mv $file prefix-`printf "%03d" ${num}`.ext
done
1
27.01.2020, 21:12

Теги

Похожие вопросы