Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Mam następujący problem: mam dużą ilość plików o nazwach w stylu
plik1.gif plik2.gif plik10.gif plik20.gif plik100.gif plik200.gif
i chciałbym im zmienić nazwy na
plik001.gif plik002.gif plik010.gif plik020.gif plik100.gif plik200.gif
Pierwszym pomysłem było
mv plik[0-9].gif plik00\1.gif mv plik[0-9][0-9].gif plik0\1\2.gif
I metoda ta działała w katalogu testowym dopóki miałem po jednych plikach z wzorca (tylko plik1.gif, plik10.gif), jak dorzuciłem kolejne, tak że plik[0-9].gif odpowiadało więcej niż jednemu plikowi to mv wywalał błąd, że plik00\1.gif nie jest katalogiem (no i słusznie).
Następnie próbowałem powalczyć z pętlą for, z find i -exec, ale tutaj wyniki były jeszcze gorsze, zupełnie nic mi się nie udało osiągnąć (zamienie wszystkich plik[0-9].gif na jedno plik001.gif sukcesem raczej nie jest ;]).
Ma ktoś jakikolwiek pomysł jak automagicznie zmienić te nazwy?
Ostatnio edytowany przez azhag (2007-11-18 13:07:01)
Offline
jest wtyczka do krusadera do masowej zmainy nazw plikow a le nie wiem czy ci o to chodzi
Offline
Trochę siłowo, ale powinno działać:
#!/bin/bash # plikX.gif na plik00X.gif x=1; while [ $x -le 9 ]; do nazwa="plik$x.gif" if [ -f "$nazwa" ]; then echo "Zmieniam $nazwa na plik00$x.gif" mv "$nazwa" "plik00$x.gif" fi x=$[x + 1] done # plikXX.gif na plik0XX.gif x=10; while [ $x -le 99 ]; do nazwa="plik$x.gif" if [ -f "$nazwa" ]; then echo "Zmieniam $nazwa na plik0$x.gif" mv "$nazwa" "plik0$x.gif" fi x=$[x + 1] done
Offline
siłowo, niesiłowo -- działa, dzięki
swoją drogą: lol. taki ze mnie masta, że regexpami chciałem to robić, a rozwiązania się okazuje bardziej niż banalne :) KISS, KISS i jeszcze raz KISS, nie należy nigdy motać ;)
Ostatnio edytowany przez azhag (2007-11-18 13:10:57)
Offline
Bardziej uniwersalne rozwiązanie.
#!/bin/sh PLIK='plik5.gif' BAZA='plik' ROZ='gif' ILOSC_MIEJSC=3 NAZWA=${PLIK#$BAZA} LICZBA=${NAZWA%.$ROZ} LEN=${#LICZBA} let "ILOSC_ZER = ILOSC_MIEJSC - LEN" while [ $ILOSC_ZER -gt "0" ] do LICZBA=0$LICZBA let "ILOSC_ZER -= 1" done echo $BAZA$LICZBA.$ROZ
Offline
Strony: 1