Portál AbcLinuxu, 10. května 2025 05:31

Dotaz: rename slozek, ktere maji tecku v nazvu

30.10.2008 23:48 blogsm | skóre: 8 | blog: mozektevidi
rename slozek, ktere maji tecku v nazvu
Přečteno: 530×
Odpovědět | Admin
Potreboval bych prejmenovat slozky. je jich dost a chci prejmenovat jen ty, ktere maji v nazvu tecku nebo vice tecek.. zkousel jsem pres cistic.py, rename ale bez uspechu.. ....slozka .sl.o.z..ka s.l.o.z.k.a. apod.
S linuxem teprve začínám! (už půl roku) mozektevidi.net
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.10.2008 00:36 kocour_easy | skóre: 4
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
Odpovědět | | Sbalit | Link | Blokovat | Admin
mv ".sl.o.z..ka" "`echo .sl.o.z..ka|sed -e 's/\.//'`"
31.10.2008 06:21 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
todle presune jednu slozku, ale chtel bych regularni vyraz. slozek je vic. Nebo skript.
....slozka
.sl.o.z..ka
s.l.o.z.k.a.
nejak...a..slozka
mujadres.ar
jeden..den..doma
S linuxem teprve začínám! (už půl roku) mozektevidi.net
31.10.2008 06:22 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
nahradit tecky treba pomlckami
S linuxem teprve začínám! (už půl roku) mozektevidi.net
31.10.2008 11:41 Pihhan | skóre: 11
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
no, myslím že regulární výraz není třeba. otázka je, jestli hodláš přesunovat i adresář s tečkou na začátku, tedy skrytý adresář. Pokud tam takové nejsou, bohatě stačí pattern '*.*' do shellu.

Příklad:

složky s tečkou vypíšeš například takto (i rekurzivně!):

find . -name '*.*' -type d

aby to neslo rekurzivne, lze pridat -maxdepth 1, ale potom by to slo i jednoduseji forem v bashi pokud to chceš hromadně přejmenovávat, jde třeba i tohle:

find . -name '*.*' -not -name '.*' -type d -depth  | while read DIR; do 
    NEWDIR=$(echo "$DIR"|sed -e 's/\.//g') # odstraneni tecek
    NEWDIR=$(echo "$DIR"|sed -e 's/\./_/g') # nebo nahrazeni podtrzitky
    mv "$DIR" "$NEWDIR"
done

Samozřejmě tohle jde provést 100 a jedním způsobem, tohle je jenom příklad.
31.10.2008 18:30 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
NEWDIR="${DIR//./}"
NEWDIR="${DIR//./_}"
If you hold a Unix shell up to your ear, you can you hear the C.
31.10.2008 18:54 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
mzk@mzk-laptop:~/test/bad_name$ find . -name '*.*' -not -name '.*' -type d -depth  | while read DIR; do
>     NEWDIR=$(echo "$DIR"|sed -e 's/\.//g') # odstraneni tecek
>     NEWDIR=$(echo "$DIR"|sed -e 's/\./_/g') # nebo nahrazeni podtrzitky
>     mv "$DIR" "$NEWDIR"
> done
find: warning: you have specified the -depth option after a non-option argument -name, but options are not positional (-depth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.

mv: cannot move `./Danka.S' to `_/Danka_S': No such file or directory
mv: cannot move `./A.D.I.D.A.S' to `_/A_D_I_D_A_S': No such file or directory
mv: cannot move `./bera.x' to `_/bera_x': No such file or directory
S linuxem teprve začínám! (už půl roku) mozektevidi.net
1.11.2008 22:35 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
DIR="${DIR#./}"
NEWDIR="${DIR//./}"
prip.
DIR="${DIR#./}"
NEWDIR="${DIR//./_}"
If you hold a Unix shell up to your ear, you can you hear the C.
5.11.2008 11:03 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
[/home/mzk/libko/bad_name]# find . -name '*.*' -not -name '.*' -type d -depth  | while read DIR; do
> DIR="${DIR#./}"
> NEWDIR="${DIR//./_}"
> mv "$DIR" "$NEWDIR"
> done
find: warning: you have specified the -depth option after a non-option argument -name, but options are not positional (-depth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.

mv: invalid option -- .
Try `mv --help' for more information.
mv: cannot move `Angel.pusinka/V.I.P' to `Angel_pusinka/V_I_P': No such file or directory
mv: invalid option -- .
Try `mv --help' for more information.
S linuxem teprve začínám! (už půl roku) mozektevidi.net
5.11.2008 23:25 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
Manual uz za teba citat nebude. To -depth z findu si vyhod. Ak to tam nebude, tak sa najprv premenuju adresare a az potom ich obsah, takze to nebude robit tu chybu co tu kopirujes, pretoze v tom case uz bude adresar premenovany.
If you hold a Unix shell up to your ear, you can you hear the C.
31.10.2008 12:37 Mortal | skóre: 26 | blog: mortals_log
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
Odpovědět | | Sbalit | Link | Blokovat | Admin
pustit `rename . '' *` nekolikrat za sebou, tolikrat dokud budou tecky v nazvu
ne moc elegantni
ale rychle a jednoduche
V pekle jsou samé diskety a ďábel je velká disketová mechanika
31.10.2008 18:49 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
Black.ang3l         -Hanicek-           -.LiNDusHkAaa.-         Plisacek.1
black.nigga         -Haniska91-         --Lolitka--             -Radushka-
bloncka.s           Helus.R             _LoVeLy...PrInCeSs_     Red.Rose.2
mzk@mzk-laptop:~/test/bad_name$ rename . '' *
Unknown option: A
Unknown option: I
Unknown option: R
Unknown option: I
Unknown option: N
Unknown option: K
Unknown option: A
Usage: rename [-v] [-n] [-f] perlexpr [filenames]

S linuxem teprve začínám! (už půl roku) mozektevidi.net
2.11.2008 11:41 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
libimseti?

Zkus rename . '' -- *
-- Nezdar není hanbou, hanbou je strach z pokusu.
5.11.2008 11:05 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
jj, libimseti.
[/home/mzk/libko/bad_name]# rename . '' -- *
syntax error at (eval 1) line 1, near "."
S linuxem teprve začínám! (už půl roku) mozektevidi.net
5.11.2008 11:49 Mortal | skóre: 26 | blog: mortals_log
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
mas jinou verzi rename nez mam ja
ta moje to zvlada ani soubory zacinajici pomlckou ji nevadi
tvoje verze by to treba zvladla taky ale musel by jsi podle manualu upravit parametry
V pekle jsou samé diskety a ďábel je velká disketová mechanika
5.11.2008 18:44 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
A jak si nainstaluji tu tvoji verzi? Nebo jak upravim ten radek?
S linuxem teprve začínám! (už půl roku) mozektevidi.net
5.11.2008 20:51 GeorgeWH | skóre: 42
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
Odpovědět | | Sbalit | Link | Blokovat | Admin
napr.
$ for i in `ls *.*`; do NEW=`echo "$i" | sed 's/\./_/g'`; mv "$i" "$NEW"; done
5.11.2008 21:05 GeorgeWH | skóre: 42
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
alebo
$ find . -maxdepth 1 -iname "*.*" -not -name ".*" -print | while read DIR; do NEW=`echo $DIR | sed 's/\./_/g'`; mv "$DIR" "$NEW"; done
5.11.2008 22:41 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
[@mozek]-[/home/mzk/libko/bad_name]# for i in `ls *.*`; do NEW=`echo "$i" | sed 's/\./_/g'`; mv "$i" "$NEW"; done
ls: invalid option -- .
Try `ls --help' for more information.
[@mozek]-[/home/mzk/libko/bad_name]# find . -maxdepth 1 -iname "*.*" -not -name ".*" -print | while read DIR; do NEW=`echo $DIR | sed 's/\./_/g'`; mv "$DIR" "$NEW"; done
mv: cannot move `./-.LiNDusHkAaa.-' to `_/-_LiNDusHkAaa_-': No such file or directory
mv: cannot move `./-.Weunka_prdelka.-' to `_/-_Weunka_prdelka_-': No such file or directory
S linuxem teprve začínám! (už půl roku) mozektevidi.net
6.11.2008 01:44 GeorgeWH | skóre: 42
Rozbalit Rozbalit vše Re: rename slozek, ktere maji tecku v nazvu
tak to moze byt problem shell aliasu prikazu ls. takze potom takto:
$ for i in `/bin/ls *.*`; do NEW=`echo "$i" | sed 's/\./_/g'`; mv "$i" "$NEW"; done
alebo
$ find ./ -maxdepth 1 -iname "*.*" -not -name ".*" -print | while read DIR; do NEW=`echo $DIR | sed 's/\.\///' | sed 's/\./_/g'`; mv "$DIR" "$NEW"; done
alebo
$ find ./ -maxdepth 1 -iname "*.*" -not -name ".*" -print | while read DIR; do NEW=`echo $DIR | sed -n 's/[^/]*\///p' | sed 's/\./_/g'`; mv "$DIR" "$NEW"; done

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.