Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: Xijo 13 Října 2008, 13:01:59

Název: skript na premenovanie...
Přispěvatel: Xijo 13 Října 2008, 13:01:59
Chce[m|l] som si vytvorit vlastny! skript na premenovanie suborov|priecinkov v priecinku, akurat mi to nechce urobit.... pls len povecte kde je chyba, co je blbost:

Kód: [Vybrat]
#!/bin/bash

DIR=$1

mv `ls -1 $DIR` `ls $DIR|sed "s/\ /\_/g"`
echo "ble"
exit
Název: Re: skript na premenovanie...
Přispěvatel: nettezzaumana 13 Října 2008, 13:12:48
to je chyba ;) .. to by fungovalo jen pro jednu polozku .. musis to udelat takto ::

Kód: [Vybrat]
#!/bin/bash

ls -1 "$1" >/tmp/filelist.tmp;
cd "$1";

while read line; do
        mv -v "$line" $(echo $line | sed 's/\ /\_/g');
done </tmp/filelist.tmp

rm /tmp/filelist.tmp
Název: Re: skript na premenovanie...
Přispěvatel: Xijo 13 Října 2008, 13:34:09
ahaa vdaka :) pomohl si :) len si tam zabudol dat prepnutie do toho priecinku :) inak by to nefachcilo :)
dak :)
Název: Re: skript na premenovanie...
Přispěvatel: nettezzaumana 13 Října 2008, 13:43:44
np
Název: Re: skript na premenovanie...
Přispěvatel: Xijo 13 Října 2008, 15:14:19
nakoniec to vyzera takto :     :D:D
Kód: [Vybrat]

#!/bin/bash

if [ $# != 1 ]
then
echo "Usage: (skript) PATH"
echo "Hromadne premenovanie suborov..."
exit
fi

if [ ! -d $1 ]
then
echo "Nezvolil si priecinok"
exit
fi


DIR=$1
ls -1 "$DIR" >/tmp/filelist.tmp
cd $DIR

select CO in '_ na mezderu' 'Medzera na  _' 'Ine...'
do
if [ "$CO" == "Ine..." ]
then
echo -n "Zadaj CO nahradit: "
read CO
elif [ "$CO" = "Medzera na _" ]
then
CO=' '
CIM='_'
elif [ "$CO" = "_ na medzeru" ]
then
CO='_'
CIM=' '
fi
if [ ! -z CO ]
then
        break;
fi

done

if [ -z $CIM ]
then
select CIM in ' ' '_' 'Ine...'
do
        if [ "$CIM" == "Ine..." ]
        then
                echo -n "Zadaj CIM nahradit: "
                read CIM
        fi
if [ ! -z CIM ]
then
break;
fi

done
fi

while read line; do
NAHRAD=$(echo $line | sed "s/$CO/$CIM/g")
mv -v "$line" "$NAHRAD" 2>/dev/null
done </tmp/filelist.tmp

rm /tmp/filelist.tmp
cd -

exit

Název: Re: skript na premenovanie...
Přispěvatel: nettezzaumana 13 Října 2008, 16:57:32
hmm .. to manipulaci se soubory mi to '2>/dev/null' nepripada moc rozumny .. ale proti gustu, zadny disputat

ad.1) if [ ! -z CO ] // ??? coze .. nema byt :: if [ ! -z $CO ]; then ..
ad.2) stare verze bashe neznaji $#, takze je lepsi a cistsi metoda :: if [ -z $1 ] || [ ! -z $2 ]; then ..
ad.3) != je pro retezce, 'ne' je pro cisla

## to je spatne .. tohle nemuze vratit false
>  if [ ! -z XX ]; then echo fuj; fi
fuj

## takhle je to spravne
> if [ ! -z $XX ]; then echo fuj; else echo nefuj; fi
nefuj
Název: Re: skript na premenovanie...
Přispěvatel: nettezzaumana 13 Října 2008, 17:08:37
uff .. dyk to vubec nefunguje jak ma !! ;D
Název: Re: skript na premenovanie...
Přispěvatel: Xijo 13 Října 2008, 22:09:41
hmm .. to manipulaci se soubory mi to '2>/dev/null' nepripada moc rozumny .. ale proti gustu, zadny disputat

ad.1) if [ ! -z CO ] // ??? coze .. nema byt :: if [ ! -z $CO ]; then ..
ad.2) stare verze bashe neznaji $#, takze je lepsi a cistsi metoda :: if [ -z $1 ] || [ ! -z $2 ]; then ..
ad.3) != je pro retezce, 'ne' je pro cisla

## to je spatne .. tohle nemuze vratit false
>  if [ ! -z XX ]; then echo fuj; fi
fuj

## takhle je to spravne
> if [ ! -z $XX ]; then echo fuj; else echo nefuj; fi
nefuj

No ja som bol tak uceny :D :D :D
s tym -ne mas pravdu
if [];then --> then mas v dalsom riadku
else nieje povinny parameter v IF :)
2>/dev/null niekedy hodi chybu (ak nevie nahradit) ale nic zle neurobi takze preto som dal len dat het hlasku

btw mne to fachci....
este aj profesor mi povedal ze dobre :D ako tak ale...  :D
Mne to v pohode premenuva napr medzeri na _ .....