|
Skrypt zmieniający nazwy plików
meliorus - 18-07-2009 22:42
Witam. Posiadam serwer dedykowany z przeznaczeniem do torrentów i mam do was pytanie. Znacie może jakiś sposób na automatyczne konwertowanie nazw, że tam gdzie jest:
spacja
aby było:
_
oraz zamiast
( )
było:
[ ]
Od pewnego czasu ręczna zmiana tych że parametrów mnie strasznie irytuje. Czy można zrobić takie coś poprzez jakiś automatyczny program, skrypt aby wszystkie katalogi miały zmienioną nazwę? Z góry dziękuję za pomoc.
fnmirk - 18-07-2009 23:21
meliorus, przejrzałeś forum? Jest na pewno przedstawiony taki skrypt.
meliorus - 18-07-2009 23:27
Przeglądałem ale nic nie znalazłem.
Stawi - 19-07-2009 03:59
Napisane na "kolanie", ale powinno dzialac:
#!/bin/sh for old in *; do new=$(echo $old | tr " ()" "_[]") mv "$old" "$new" done
meliorus - 19-07-2009 15:11
nom działa, ale przydało by się aby był taki skrypt co zmieni we wszystkich katalogach i podkatalogach to noi wykosi nawiasy żeby np. zamiast takiego
( )
byl
[ ]
Bo takie nawiasy
( )
wywalają mi:
-bash: syntax error near unexpected token `('
Stawi - 19-07-2009 17:52
meliorus, zamienia tak jak chciałeś - sprawdź manuala tr. A żeby działało też na podkatalogach to trzeba już się więcej pobawić:
#!/bin/sh if [ -z "$1" ]; then dir='.'; else dir=$1; fi for old in "$dir"/*; do new=$(echo $old | tr " ()" "_[]") if [ "$old" != "$new" ]; then mv "$old" "$new" fi if [ -d "$new" ]; then $0 "$new" fi done
Dodatkowo jest mały bugfix - sprawdza czy trzeba zmieniać czy nie.
meliorus - 19-07-2009 19:24
Wrzuciłem ten skrypcik do pliku name.sh i gdy w konsoli wywołuję go poleceniem:
sh name.sh
to niestety nie działa. Bo tyle ile mam katalogów tyle mi bierze i wywala linijek takiego komunikatu: name.sh: line 9: name.sh: command not found
Błąd jaki tam wyświetla ale to naprawdę działa. Dziękuję ci naprawdę za pomoc.
Stawi - 19-07-2009 20:43
chmod +x name.sh
albo linie
$0 "$new"
zamien na
sh $0 "$new"
Pozdro ;)
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|