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  2008-04-18 15:05:41

  ukasz - Użytkownik

ukasz
Użytkownik
Skąd: wroclaw
Zarejestrowany: 2006-06-21

[SOLVED] rekursywne zmienianie spacji na _

Witam

potrzebuje napisac skrypcik ktory bedzie usuwal spacje z nazw katalogow i plikow. ma sie odpalac w danym katalogu i leciec rekursywnie.
dalem export QUOTING_STYLE=escape ale to tylko dziala dla ls.

lista plikow i katalogow jest bardzo duza wiec potrzebne bedzie mi najpierw listowanie katalogow ktore maja w nazwie sacje a pozniej zamiana ich.


mozna by to zrobic ls i pozniej zmieniac nawy ale musialbym wchodzic do kazdego katalogu i odpalac program

Ostatnio edytowany przez ukasz (2008-04-25 22:43:21)


http://wiblo.pl/wilk/userbars/debian_user_black.png

Offline

 

#2  2008-04-18 15:20:33

  Robot_ - Członek DUG

Robot_
Członek DUG
Skąd: Zabrzeg
Zarejestrowany: 2006-07-04

Re: [SOLVED] rekursywne zmienianie spacji na _

Kod:

find -print0 | while IFS= read -rd $'\0' f ; do mv "$f" `echo "$f" | sed -e 's; ;;g'` ; done

spróbuj coś takiego powinno pomóc :)

Pozdrawiam


Nie dyskutuj z debilem. Najpierw sprowadzi Cię do swojego poziomu, a potem pokona doświadczeniem

Offline

 

#3  2008-04-18 15:29:35

  ukasz - Użytkownik

ukasz
Użytkownik
Skąd: wroclaw
Zarejestrowany: 2006-06-21

Re: [SOLVED] rekursywne zmienianie spacji na _

zadzialalo i zgnal czyms:

Kod:

mv: `.' i `./.' to ten sam plik
mv: `./bekarty_diabla_cd1.avi' i `./bekarty_diabla_cd1.avi' to ten sam plik

wyglada na to ze probuje podmienic pliki ktore nie potrzebuja modyfikacji.

zapomnialem dodac ze ma zamieniac tez duze litery na male.

Ostatnio edytowany przez ukasz (2008-04-18 15:30:34)


http://wiblo.pl/wilk/userbars/debian_user_black.png

Offline

 

#4  2008-04-18 15:34:06

  Robot_ - Członek DUG

Robot_
Członek DUG
Skąd: Zabrzeg
Zarejestrowany: 2006-07-04

Re: [SOLVED] rekursywne zmienianie spacji na _

jest to dość tępa wersja.
Zawsze możesz error przekierować do /dev/null :)
Albo możesz kopiować wszystko do innego katalogu.

co do liter to link


Nie dyskutuj z debilem. Najpierw sprowadzi Cię do swojego poziomu, a potem pokona doświadczeniem

Offline

 

#5  2008-04-18 16:44:37

  ukasz - Użytkownik

ukasz
Użytkownik
Skąd: wroclaw
Zarejestrowany: 2006-06-21

Re: [SOLVED] rekursywne zmienianie spacji na _

dzieki.

w manie grepa pisze ze mozna grepac na podstawie wyrazen regularnych. tak wiec sprobowalem. zapisalem plik z zawartoscia:

Du
asd
dr

i wydalem polecenie

Kod:

cat test | grep [:upper:]

no i nic nie pokazal. z lower tak samo

ale jak dalem

Kod:

cat test | grep [A-Z]

to zadzialalo

chcialbym grepnac wszystko co ma w nazwie [:blank:]  ale nic sie nie dzieje.

co robie zle ?


http://wiblo.pl/wilk/userbars/debian_user_black.png

Offline

 

#6  2008-04-18 16:47:46

  ukasz - Użytkownik

ukasz
Użytkownik
Skąd: wroclaw
Zarejestrowany: 2006-06-21

Re: [SOLVED] rekursywne zmienianie spacji na _

ok juz wiem. :P  nie doczytalem

trzeba takie rzeczy jak upper lower itp pisac nastepujaco:

[[:upper:]]
[[:lower:]]
itp

jescze raz dzieki za pomoc


http://wiblo.pl/wilk/userbars/debian_user_black.png

Offline

 

#7  2008-04-18 23:13:24

  Ventrue - Użytkownik

Ventrue
Użytkownik
Skąd: Lubin
Zarejestrowany: 2007-08-16

Re: [SOLVED] rekursywne zmienianie spacji na _

Możesz i tak:
(Fragment większego skryptu):

Kod:

for file in `dir -d * | grep .flv` ; do

mv "$file" `echo "$file" | tr ' ' '_'`
done

The Linux philosophy is 'Laugh in the face of danger'. Oops. Wrong One. 'Do it yourself'. Yes, that's it.
Linus Torvalds

Offline

 

#8  2008-04-19 20:45:38

  ukasz - Użytkownik

ukasz
Użytkownik
Skąd: wroclaw
Zarejestrowany: 2006-06-21

Re: [SOLVED] rekursywne zmienianie spacji na _

napisalem cos takiego :

Kod:

#!/bin/bash
set +x
basepath=/root/test
depth=2
x=1


while [ $x -le $depth ]; do
    for i in `find $basepath -maxdepth $x | grep  [[:blank:]] | tr [:blank:] _ `
    do
    echo `find $basepath -maxdepth $x  | grep  [[:blank:]]`
    trim=`echo $i | sed -e 's; ;_;g'`
    untrim=`echo $i | sed -e 's;_; ;g'`
    mv "$untrim" "$trim"
    echo "$untrim -> $trim"
    done
x=$[x+1]
done

katalogi w maxdepth = 1 zamienia bez problemu ale jesli jest wiecej niz 1 juz sie krzaczy


a oto co otrzymuje po wydaniu polecenia:

Kod:

/root/test/sd_sd/aa aa
mv: nie można wykonać stat na `/root/test/sd sd/aa aa': Nie ma takiego pliku ani katalogu
/root/test/sd sd/aa aa -> /root/test/sd_sd/aa_aa

http://wiblo.pl/wilk/userbars/debian_user_black.png

Offline

 

#9  2008-04-25 22:41:46

  ukasz - Użytkownik

ukasz
Użytkownik
Skąd: wroclaw
Zarejestrowany: 2006-06-21

Re: [SOLVED] rekursywne zmienianie spacji na _

znalazlem wkoncu rozwiazanie

Kod:

#!/bin/bash
# Convert filenames to lowercase
# and replace characters recursively
#####################################

if [ -z $1 ];then echo Give target directory; exit 0;fi

find "$1" -depth -name '*' | while read file ; do
        directory=$(dirname "$file")
        oldfilename=$(basename "$file")
        newfilename=$(echo "$oldfilename" | tr 'A-Z' 'a-z' | tr ' ' '_' | sed 's/_-_/-/g')
        if [ "$oldfilename" != "$newfilename" ]; then
                mv -i "$directory/$oldfilename" "$directory/$newfilename"
                echo ""$directory/$oldfilename" ---> "$directory/$newfilename""
                #echo "$directory"
                #echo "$oldfilename"
                #echo "$newfilename"
                #echo
        fi
        done
exit 0

http://wiblo.pl/wilk/userbars/debian_user_black.png

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)