- скриптец.. может пригодится кому...,
Raven77, 22:22 , 25-Авг-13 (1)Может, sort -n, --numeric-sort ?
- скриптец.. может пригодится кому...,
ACCA, 01:27 , 26-Авг-13 (2)Вместо > char="1" сделай какой-нибудь
cnt=1
использовать так - вместо > string=`sed -n $char\p $file` пиши
string=$( printf "%03i.%s" $cnt $file )
- скриптец.. может пригодится кому...,
erera22, 18:48 , 26-Авг-13 (3)Вообще, когда создаете file, проще всего ls | sort -n > filename , ну или find . -type f | sort -n > filename.Или так: #!/bin/bash filename="$1" prefix="$2" postfix="$3" begin=1 function _go0_exit { echo "$1" exit 1 } function _go0 { test -e "$filename" || _go0_exit "Error: content file was not found" num=$begin sort -n "$filename" | while read input do output="$prefix$num$postfix" test ! -e "$output" -o -e "input" || continue echo "[$input] to $output" mv "$input" "$output" let num=$num+1 done } test $# -ge 3 || _go0_exit "Usage: $0 file prefix postfix" _go0 exit 0 Тут порядок задания имен в файле не важен.
- скриптец.. может пригодится кому...,
cmd4, 19:59 , 26-Авг-13 (4)>Может, sort -n, --numeric-sort ?пробовал не получается. #----------------------- >использовать так - вместо > string=`sed -n $char\p $file` >пиши >string=$( printf "i.%s" $cnt $file ) вставил в скрипт - не получилось, пытается дать rename этy строку 001.00 leftright 001.00 но это то что надо.осталось только понять и переделать :) чем и займусь. благодарю :) #---------------------------------- > Вообще, когда создаете file, проще всего ls | sort -n > filename > , ну или find . -type f | sort -n > > filename. > Или так: > mv "$input" "$output" создавать мне не нужно, и переименовывать через mv тоже, зачем перекидывать весь файл ради смены имени? , но может я и не понял чего, поэксперементирую с примером. #------------------------------------
- скриптец.. может пригодится кому...,
cmd4, 20:45 , 26-Авг-13 (5)почти доделал, все работает но хотел бы чтобы он автоматически определял сколько цифр использовать для имени. думаю сделать так: #-------------------------------- if [ -e $file ]; then end=`cat $file | wc -l` # узнаем сколько всего файлов, например 331 endnum=`printf $end | wc -c` # узнаем сколько цифр в числе 331, т.е. выдаст "3"echo "--------------[$endnum]-----------" test=$( printf "%05i%s" $char ) #вот тут количество цифр в выводе задано жестко echo "--------------[$test]-----------" test=$( printf "%???i%s" $char ) #как заменить "05" на переменную ? вариант test=$( printf "%$endnumi%s" $char ) не работает...
- скриптец.. может пригодится кому...,
cmd4, 20:54 , 26-Авг-13 (6)УРАА! :) слепил!рабочий вариант: #!/bin/bash file=$1 left=$2 right=$3 char="1" #echo "TRAP_0" _go0(){ if [ -e $file ]; then end=`cat $file | wc -l` endnum=`printf $end | wc -c` #------------------------------ string=`sed -n $char\p $file` str=`echo $string| tr '/' "\n" | tail -n1` outchar=$( printf "%0$endnum""i%s" $char ) echo "[$string] to " "$left$outchar$right" rename "$str" "$left$outchar$right" "$string" #echo "$str" "$left$outchar$right" "$string" while [ $char != $end ]; do char=$(( $char + 1)) string=`sed -n $char\p $file` str=`echo $string| tr '/' "\n" | tail -n1` outchar=$( printf "%0$endnum""i%s" $char ) echo "[$string] to " "$left$outchar$right" rename "$str" "$left$outchar$right" "$string" #echo "$str" "$left$outchar$right" "$string" done #------------------------------ else echo " -=file not found.=-\n" echo "renall \"file\" \"left pattern\" \"right pattern\"; fi } if [ $right ]; then _go0 else echo "renall \"file\" \"left pattern\" \"right pattern\"; fi - скриптец.. может пригодится кому...,
pavlinux, 00:28 , 27-Авг-13 (7)> написал скриптик который переименовывает по порядку от 1 до ХХХ..n $ man rename; $ man mmv (но оно не у всех есть) > почти доделал, все работает но хотел бы чтобы он автоматически определял сколько > цифр использовать для имени. Количество цифр в числе равно количеству раз, которое можно делить на основание системы счисления. for ((x=311, k=0; x > 0; x=x/10)) do ((k++)); done;
- скриптец.. может пригодится кому...,
ACCA, 07:51 , 04-Сен-13 (8)> почти доделал, все работает но хотел бы чтобы он автоматически определял сколько > цифр использовать для имени. думаю сделать так: Overengineering detected. Вот смотри, переименовал ты один каталог файлов, насчитал и заюзал 2 цифры. Завтра ты переименовывал другой каталог, в нём юзал 3 цифры. Послезавтра ты решил слить всё в кучу и опять получил кривую сортировку. Вломи 6 цифр и не морочь голову ни себе ни людям.
|