Skrypt zmieniaj

Tematy związane z oprogramowaniem, instalacją, konfiguracją
meliorus
Beginner
Posty: 143
Rejestracja: 20 maja 2008, 07:41

Skrypt zmieniający nazwy plików

Post autor: meliorus »

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:

Kod: Zaznacz cały

spacja
aby było:oraz zamiastbył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
Senior Member
Posty: 8295
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

meliorus, przejrzałeś forum? Jest na pewno przedstawiony taki skrypt.
meliorus
Beginner
Posty: 143
Rejestracja: 20 maja 2008, 07:41

Post autor: meliorus »

Przeglądałem ale nic nie znalazłem.
Stawi
Beginner
Posty: 209
Rejestracja: 10 lutego 2007, 16:02
Lokalizacja: Kraków

Post autor: Stawi »

Napisane na "kolanie", ale powinno dzialac:

Kod: Zaznacz cały

#!/bin/sh
for old in *; do
	new=$(echo $old | tr " ()" "_[]")
	mv "$old" "$new"
done
meliorus
Beginner
Posty: 143
Rejestracja: 20 maja 2008, 07:41

Post autor: meliorus »

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:

Kod: Zaznacz cały

-bash: syntax error near unexpected token `('
Stawi
Beginner
Posty: 209
Rejestracja: 10 lutego 2007, 16:02
Lokalizacja: Kraków

Post autor: Stawi »

meliorus, zamienia tak jak chciałeś - sprawdź manuala tr.
A żeby działało też na podkatalogach to trzeba już się więcej pobawić:

Kod: Zaznacz cały

#!/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
Beginner
Posty: 143
Rejestracja: 20 maja 2008, 07:41

Post autor: meliorus »

Wrzuciłem ten skrypcik do pliku name.sh i gdy w konsoli wywołuję go poleceniem:

Kod: Zaznacz cały

sh name.sh
to niestety nie działa.
Bo tyle ile mam katalogów tyle mi bierze i wywala linijek takiego komunikatu:

Kod: Zaznacz cały

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
Beginner
Posty: 209
Rejestracja: 10 lutego 2007, 16:02
Lokalizacja: Kraków

Post autor: Stawi »

Kod: Zaznacz cały

chmod +x name.sh
albo linie

Kod: Zaznacz cały

$0 "$new"
zamien na

Kod: Zaznacz cały

sh $0 "$new" 
Pozdro ;)
ODPOWIEDZ