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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-11-18 12:31:26

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

[rozw.] poprzedzenie niskich numerów zerami w nazwach plików

Mam następujący problem: mam dużą ilość plików o nazwach w stylu

Kod:

plik1.gif plik2.gif plik10.gif plik20.gif plik100.gif plik200.gif

i chciałbym im zmienić nazwy na

Kod:

plik001.gif plik002.gif plik010.gif plik020.gif plik100.gif plik200.gif

Pierwszym pomysłem było

Kod:

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)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#2  2007-11-18 12:40:10

  marcusdavidus - Członek DUG

marcusdavidus
Członek DUG
Skąd: z nienacka
Zarejestrowany: 2006-09-08
Serwis

Re: [rozw.] poprzedzenie niskich numerów zerami w nazwach plików

jest wtyczka do krusadera do masowej zmainy nazw plikow a le nie wiem czy ci o to chodzi


http://i32.photobucket.com/albums/d33/marcusdavidus/marcussyg.png
C2D E8400, Asus P5N7A-VM, 2x 1gb DDR2 OCZ Reaper 1066, Baracuda 500GB S12 SataII,PSU OCZ stealthXstream 500W, Cooler Asus Triton 77, Buda Cooler Master Elite ,Keys  A4T X7 , Mysz A4T X7 , creative HD1900, Zotac GTX260 AMP2 core 216,Oczka Dell P1130 FD Trinitron

Offline

 

#3  2007-11-18 12:52:41

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: [rozw.] poprzedzenie niskich numerów zerami w nazwach plików

Trochę siłowo, ale powinno działać:

Kod:

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

 

#4  2007-11-18 13:04:06

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: [rozw.] poprzedzenie niskich numerów zerami w nazwach plików

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)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#5  2007-11-18 15:52:50

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: [rozw.] poprzedzenie niskich numerów zerami w nazwach plików

Bardziej uniwersalne rozwiązanie.

Kod:

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

http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)