Masowa zmiana nazw plików - zamiana spacji

Tematy związane z oprogramowaniem, instalacją, konfiguracją
Awatar użytkownika
Dalik
Beginner
Posty: 206
Rejestracja: 25 października 2007, 18:13
Lokalizacja: /home/dalik

Masowa zmiana nazw plików - zamiana spacji

Post autor: Dalik »

Poszukuję konsolowego skryptu/programu, który będzie zmieniał mi masowo nazwy plików.

Przykład:

Kod: Zaznacz cały

Schiller - Day and Night live
zamienić na:

Kod: Zaznacz cały

schiller_-_day_and_night_live
berniekk
Posty: 27
Rejestracja: 09 sierpnia 2009, 22:37
Lokalizacja: Lublin

Post autor: berniekk »

Nie wiem czy dokładnie o to Ci chodzi, ale twoje problemy może rozwiązać convert. Używałem tego do masowej zmiany nazw zdjęć z aparatu cyfrowego. Tutaj masz przykładowe możliwości convert.
zloty87
Posty: 70
Rejestracja: 04 lutego 2009, 12:14

Post autor: zloty87 »

Wystarczy, że trochę przerobisz mój:

http://debian.linux.pl/viewtopic.php?t=14294
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

pyrion
Posty: 42
Rejestracja: 13 czerwca 2009, 12:04

Post autor: pyrion »

Możesz użyć krename.
kalota

Post autor: kalota »

Kod: Zaznacz cały

#! /bin/bash

ls $1|while read plik
do
  cplik=$(echo $plik | sed -e "s/ /_/g" | tr A-Z a-z)
  mv -fv "$(echo $1$plik)" "$(echo $1$cplik)" 2>/dev/null
done;

Kod: Zaznacz cały

sh skrypt /nazwa/katalogu/zakonczona/slashem/
Awatar użytkownika
Dalik
Beginner
Posty: 206
Rejestracja: 25 października 2007, 18:13
Lokalizacja: /home/dalik

Post autor: Dalik »

Wiem, że wymyślam ale coś w pythonie znalazłoby się (chcę się nauczyć tego języka i taki skrypt byłby kolejnym doświadczeniem w tej materii)?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Nigdy nie byłem mistrzem pythona i pewnie posypią się gromy :-P ale stworzyłem z nudów coś takiego:

Kod: Zaznacz cały

#!/usr/bin/python
import fileinput, sys, os

for line in fileinput.input():
        cmd = "mv \"%s\" %s" % (line.rstrip(), line.replace(' ','_'))
        os.system(cmd)
Uruchamiasz będąc w katalogu w którym masz rzeczone pliki o tak:

Kod: Zaznacz cały

ls | /to/ten/skrypt.py
Awatar użytkownika
Dalik
Beginner
Posty: 206
Rejestracja: 25 października 2007, 18:13
Lokalizacja: /home/dalik

Post autor: Dalik »

lessmian2 pisze:

Kod: Zaznacz cały

ls | /to/ten/skrypt.py
Tutaj domyślam się, że powinno być: (w moim przypadku):

Kod: Zaznacz cały

ls | python /home/dalik/software/rename.py
Pliki wejściowe:

Kod: Zaznacz cały

KATE RYAN - Desenchantee [Live @ At The Dome25 SVCD].mpg
Milk Inc. - Livin' A Lie.mpg
The Prodigy - Poison (Live).mpeg
Pliki wyjściowe:

Kod: Zaznacz cały

KATE_RYAN_-_Desenchantee_[Live_@_At_The_Dome25_SVCD].mpg
Milk Inc. - Livin' A Lie.mpg
The Prodigy - Poison (Live).mpeg
Wynik kowersji tych 3 losowych plików:

Kod: Zaznacz cały

sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `mv "The Prodigy - Poison (Live).mpeg" The_Prodigy_-_Poison_(Live).mpeg'
Opinia końcowa. Coś działa ale nie do końca?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

A bo Ty tam masz jakieś dziwne znaczki typu (),. :-P

Kod: Zaznacz cały

#!/usr/bin/python
import fileinput, sys, os

for line in fileinput.input():
	line = line.rstrip()
	cmd = "mv %s %s" % (repr(line), repr(line.replace(' ','_')))
	os.system(cmd)
Powinno być lepiej.

Edit:
Przez Ciebie prawie przypaliłem obiad :-P
ODPOWIEDZ