The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

скриптец.. может пригодится кому..., cmd4 (?), 25-Авг-13, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


5. "скриптец.. может пригодится кому..."  +/
Сообщение от cmd4email (?), 26-Авг-13, 20:45 
почти доделал, все работает но хотел бы чтобы он автоматически определял сколько цифр использовать для имени. думаю сделать так:
#--------------------------------
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 ) не работает...

Ответить | Правка | Наверх | Cообщить модератору

6. "скриптец.. может пригодится кому..."  +/
Сообщение от cmd4email (?), 26-Авг-13, 20:54 
УРАА! :)
слепил!

рабочий вариант:

#!/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

Ответить | Правка | Наверх | Cообщить модератору

7. "скриптец.. может пригодится кому..."  +/
Сообщение от pavlinux (ok), 27-Авг-13, 00:28 
> написал скриптик который переименовывает по порядку от 1 до ХХХ..n

$ man rename;
$ man mmv (но оно не у всех есть)

> почти доделал, все работает но хотел бы чтобы он автоматически определял сколько
> цифр использовать для имени.

Количество цифр в числе равно количеству раз, которое можно делить на основание системы счисления.

for ((x=311, k=0; x > 0; x=x/10)) do ((k++)); done;

Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

8. "скриптец.. может пригодится кому..."  +/
Сообщение от ACCA (ok), 04-Сен-13, 07:51 
> почти доделал, все работает но хотел бы чтобы он автоматически определял сколько
> цифр использовать для имени. думаю сделать так:

Overengineering detected.

Вот смотри, переименовал ты один каталог файлов, насчитал и заюзал 2 цифры.
Завтра ты переименовывал другой каталог, в нём юзал 3 цифры.

Послезавтра ты решил слить всё в кучу и опять получил кривую сортировку.

Вломи 6 цифр и не морочь голову ни себе ни людям.


Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру