Fórum Root.cz
Hlavní témata => Software => Téma založeno: rudaj 22. 08. 2017, 09:21:03
-
Chci hromadne prejmenovat vsechny soubory v slozce z jedne pripony na jinou. Treba soubor1.tar.gz soubor2.tar.gz ... na soubor1.tgz soubor2.tgz ... Da se to udelat nejak jednoduse jenom standardnimi unix utilitami bez pouziti shell cyklu ? Nebo mi poradte nejkratsi zapis. Pozor, nazvy souboru muzou obsahovat i unicode znaky.
-
man rename (https://linux.die.net/man/1/rename)
rename .tar.gz .tgz *.tar.gz
-
Zjistil jsem ze rename neni konzistentni na vsech unixech (a navic je to perl utilitka). V nekterych verzich je nutno dat:
rename -s .tar.gz .tgz *.tar.gz
-
Bez cyklu, unicode zrejme nevadi, ale bile znaky v nazvu soboru budou delat bordel:
find . -maxdepth 1 -name \*.tar.gz | sed -re 's/(.*)\.tar\.gz/\0 \1.tgz/' | xargs -n 2 mv
S for-cyklem si myslim, ze je to nejkratsi a nejsnaze zapamatovatelne:
for i in *.tar.gz; do mv $i ${i//.tar.gz/.tgz}; done
-
A tohle je verze s for cyklem, ve které fungují i bílé znaky:
for i in *.tar.gz; do mv "$i" "${i//.tar.gz/.tgz}"; done
Stačí přidat uvozovky :D
-
thunar je na to vynikajúci, teda ak netrváš na cli
-
thunar je na to vynikajúci, teda ak netrváš na cli
To neni standardni unix utilitka ale nejakej xfce manager co na pulce unixu nepujde, nebo bude vyzadovat 500MB zavislosti - xwindow pocinaje a emoji fontem konce :)
ps: pod unixy myslim krome linuxu taky hpux, *bsd a macos. Dost by mi pomohlo kdybych mel vsude stejny script a nemusel to ifovat dle uname.
-
MC to zvlasne...