[+] bash - zamiana wielu nazw plików

Potrzebujesz pomocy z C, C++, perl, python, itp.
wojt2007
Posty: 1
Rejestracja: 15 marca 2010, 11:42

[+] bash - zamiana wielu nazw plików

Post autor: wojt2007 »

Pilnie potrzebna pomoc, a mianowicie. Mam na serwerze około 6000 plików graficznych z tym, że wysyłając je na serwer popełniłem błąd w nazwach.

Wygląda tak

MO1235_17.jpg

Nazwa powinna wyglądać tak:

MO1235-17.jpg <- zawsze 7 znak powinien być myślnikiem, a nie podkreśleniem (po nim występują 2 cyfry np. 17 jak obok lub coś innego)

Proszę o pomoc.

Mam taki skrypt:

Kod: Zaznacz cały

 [color=#808080][I]# The above script will not work on filenames containing blanks or newlines.[/I][/color]
[color=#808080][I]# Stephane Chazelas therefore suggests the following alternative:[/I][/color]
 
[color=#000000][B]for[/B][/color] filename [color=#000000][B]in[/B][/color] *    [color=#808080][I]# Not necessary to use [color=#C20CB9][B]basename[/B][/color],[/I][/color]
[color=#808080][I]# since [/I][/color][color=#FF0000]"*"[/color] wont [color=#7A0874][B]return[/B][/color] any [color=#C20CB9][B]file[/B][/color] containing [color=#FF0000]"/"[/color].
[color=#000000][B]do[/B][/color] [color=#007800]n=[/color]`[color=#7A0874][B]echo[/B][/color] [color=#FF0000]"$filename/"[/color] | [color=#C20CB9][B]tr[/B][/color] [color=#FF0000]'[_]'[/color] [color=#FF0000]'[-]'[/color]`
[color=#808080][I]#                             POSIX char [color=#000000][B]set[/B][/color] notation.[/I][/color]
[color=#808080][I]#                    Slash added so that trailing newlines are not[/I][/color]
[color=#808080][I]#                    removed by [color=#7A0874][B]command[/B][/color] substitution.[/I][/color]
[color=#808080][I]# Variable substitution:[/I][/color]
[color=#007800]n=[/color]$[color=#7A0874][B]{[/B][/color]n%/[color=#7A0874][B]}[/B][/color]          [color=#808080][I]# Removes trailing slash, added above, from filename.[/I][/color]
[color=#7A0874][B][[/B][/color][color=#7A0874][B][[/B][/color] [color=#007800]$filename[/color] == [color=#007800]$n[/color] [color=#7A0874][B]][/B][/color][color=#7A0874][B]][/B][/color] || [color=#C20CB9][B]mv[/B][/color] [color=#FF0000]"$filename"[/color] [color=#FF0000]"$n"[/color]
[color=#808080][I]# Checks [color=#000000][B]if[/B][/color] filename already lowercase.[/I][/color]
[color=#000000][B]done[/B][/color]
 
[color=#7A0874][B]exit[/B][/color] $?
Ale zamiast znaku "-" robi mi znak "\".

Rozwiązanie:
Poradziłem sobie - wystarczyło zamienić:

Kod: Zaznacz cały

[color=#000000][B]do[/B][/color] [color=#007800]n=[/color]`[color=#7a0874][B]echo[/B][/color] [color=#ff0000]"$filename/"[/color] | [color=#c20cb9][B]tr[/B][/color] [color=#ff0000]'[_]'[/color] [color=#ff0000]'[-]'[/color]`
na:

Kod: Zaznacz cały

[color=#000000][B]do[/B][/color] [color=#007800]n=[/color]`[color=#7a0874][B]echo[/B][/color] [color=#ff0000]"$filename/"[/color] | [color=#c20cb9][B]tr[/B][/color] [color=#ff0000]'\137'[/color] [color=#ff0000]'\055'[/color]`
marfed
Posty: 3
Rejestracja: 16 marca 2010, 10:45

Post autor: marfed »

Do zamiany nazw wielu plików według wzorca służy program 'mmv' . Tu jest dobre wprowadzenie: http://krzysztof.jogger.pl/2009/08/22/m ... lu-plikow/
Awatar użytkownika
tremor
Beginner
Posty: 186
Rejestracja: 12 marca 2010, 18:20
Lokalizacja: Wrocław

Post autor: tremor »

marfed pisze:Do zamiany nazw wielu plików według wzorca służy program 'mmv' . Tu jest dobre wprowadzenie: http://krzysztof.jogger.pl/2009/08/22/m ... lu-plikow/
Oraz graficzny krename - do użytku na desktopie.
ODPOWIEDZ