Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: 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:
#!/bin/bash
DIR=$1
mv `ls -1 $DIR` `ls $DIR|sed "s/\ /\_/g"`
echo "ble"
exit
-
to je chyba ;) .. to by fungovalo jen pro jednu polozku .. musis to udelat takto ::
#!/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
-
ahaa vdaka :) pomohl si :) len si tam zabudol dat prepnutie do toho priecinku :) inak by to nefachcilo :)
dak :)
-
np
-
nakoniec to vyzera takto : :D:D
#!/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
-
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
-
uff .. dyk to vubec nefunguje jak ma !! ;D
-
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 _ .....