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-Key: 359793

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

Printed on: April 26, 2024 at 10:04 o'clock

Member: Kryolyt
Kryolyt Jan 04, 2018 updated at 02:10:41 (UTC)
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.
Member: Lochkartenstanzer
Solution Lochkartenstanzer Jan 04, 2018 updated at 10:21:46 (UTC)
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
Member: Henere
Henere Jan 04, 2018 at 16:48:02 (UTC)
Goto Top
Danke, diese \ als Escapezeichen haben gefehlt. Nun gehts.

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