Strona 1 z 1

Skrypt zmieniający nazwy plików

: 18 lipca 2009, 22:42
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.

: 18 lipca 2009, 23:21
autor: fnmirk
meliorus, przejrzałeś forum? Jest na pewno przedstawiony taki skrypt.

: 18 lipca 2009, 23:27
autor: meliorus
Przeglądałem ale nic nie znalazłem.

: 19 lipca 2009, 03:59
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

: 19 lipca 2009, 15:11
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 `('

: 19 lipca 2009, 17:52
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.

: 19 lipca 2009, 19:24
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.

: 19 lipca 2009, 20:43
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 ;)