henere
Goto Top

Ubuntu - Sonderzeichen aus Dateinamen entfernen

Servus zusammen,

ich habe hier eine Fotosammlung auf nem Webserver mit root-Zugriff liegen.
Ich würde gerne rekursiv die Dateien umbenennen, da dort etliche Dateinamen dabei sind, die von der Galerie-Software nicht "gern gesehen werden"...

Leerzeichen in Dateinamen, ok.

find . -depth -execdir rename 's/ /_/g' {} +  

.JPG in .jpg bekam ich auch noch hin.

Aber wie kann ich bitte solche Dateinamen "normalisieren" ?
n_img_6750 [800x600].jpg

Wie bekomme ich mit REGEX hin, daß die eckigen Klammern mit ersetzt werden ?

find . -depth -execdir rename 's/'[800x600]'/ /g' {} +  

ersetzt nur das 800x600 durch 7 Leerzeichen, läßt aber die stehen.

Kann mir da jemand helfen ?

Grüße, Henere

Content-ID: 359793

Url: https://administrator.de/contentid/359793

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

Kryolyt
Kryolyt 04.01.2018 aktualisiert um 03:10:41 Uhr
Goto Top
Hiermit kannst du alle "[" und "]" mit sed löschen:

find . -type f -iname "*[*" | while IFS= read -r line; do mv "$line" "$(printf %s "$line" | sed -re 's/(\[|\])//g')";  done;  

Du kannst natürlich auch mehr sonderzeichen in den string schreiben die entfernt werden sollen und find -depth für unterordner nutzen.
Lochkartenstanzer
Lösung Lochkartenstanzer 04.01.2018 aktualisiert um 11:21:46 Uhr
Goto Top
Zitat von @Henere:

find . -depth -execdir rename 's/'[800x600]'/ /g' {} +  



Moin,

Du muß diese Zeichen auch "escapen".

find . -depth -execdir rename 's/\[800x600\]/ /g' {} +


ergibt:

lks@nana:~/tmp/test$ echo -e "a\ne\ni\no\nu\n" | xargs -l1 -I X touch blXblX[800x600].jpg
lks@nana:~/tmp/test$ ls -l 
insgesamt 8
drwxrwxr-x  2 lks lks 4096 Jan  4 11:14 .
drwxrwxr-x 11 lks lks 4096 Jan  4 11:05 ..
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 blabla[800x600].jpg
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 bleble[800x600].jpg
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 blibli[800x600].jpg
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 bloblo[800x600].jpg
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 blublu[800x600].jpg
lks@nana:~/tmp/test$ find . -depth -execdir rename 's/\[800x600\]/ /g' {} +
lks@nana:~/tmp/test$ ls -l 
insgesamt 8
drwxrwxr-x  2 lks lks 4096 Jan  4 11:19 .
drwxrwxr-x 11 lks lks 4096 Jan  4 11:05 ..
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 blabla .jpg
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 bleble .jpg
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 blibli .jpg
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 bloblo .jpg
-rw-rw-r--  1 lks lks    0 Jan  4 11:14 blublu .jpg
lks@nana:~/tmp/test$ 

lks
Henere
Henere 04.01.2018 um 17:48:02 Uhr
Goto Top
Danke, diese \ als Escapezeichen haben gefehlt. Nun gehts.

REGEX mag mich nicht ... das beruht aber auf Gegensätzlichkeiten. face-wink