Вы пытаетесь считать каждую строку как символ?
Имейте эти 25 записей быть в файле под названием stocks.txt. Затем используйте следующий сценарий, чтобы выполнить итерации по каждой строке в файле запасов и обработать символ с помощью функции запаса, объявленной в том же сценарии:
while read symbol ; do
stock $symbol >> /home/user/Desktop/stockquote.txt
done < stocks.txt
На 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
Возможно, что-то вроде этого (непроверенного)
for n in *.ext; do
echo mv "$n" \
"prefix-$(printf %03d "$(basename ${n#prefix-} .ext)").ext"
done
удалить эхо
, чтобы выполнить фактическое переименование.
Примечание. Вы должны быть в каталоге, где файлы предназначены для этого метода; Работа с пафорами, которые содержат карта каталога, более сложнее.
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