Re: Der ls-Befehl und die verflixten Leerzeichen
Le jeudi 03 septembre 2015, 17:58:27 Joachim Hartmann a écrit :
> Hallo,
> ich betreibe miniDNLA auf meinem Server. Mein Testverzeichnis
> enthält folgende Dateien:
>
> ====================================================================
> ====================================================================
> ============== -rw-r--r-- 1 root root 2015-08-30 23:20
> 20150212-090500_Birge Schade bei _Volle Kanne_-(Herzkino).jpg
> -rwxr-xrwx 1 root root 2015-06-27 00:34 20150212-090500_Birge
> Schade bei _Volle Kanne_-(Herzkino).mp4
> -rw-r--r-- 1 root root 2015-08-30 23:20 20150605-201500_Mildred
> Scheel - HD - Die First Lady und der Kampf gegen den Krebs-(Doku am
> Freitag).jpg
> -rwxr--r-- 1 root root 2015-08-28 09:38 20150605-201500_Mildred
> Scheel - HD - Die First Lady und der Kampf gegen den Krebs-(Doku am
> Freitag).mp4
> -rw-r--r-- 1 root root 2015-08-30 23:20
> 20150619-180500_Erbschuld-(SOKO Wien).jpg
> -rwxr-xrwx 1 root root 2015-06-27 00:39
> 20150619-180500_Erbschuld-(SOKO Wien).mp4
> -rw-r--r-- 1 root root 2015-08-30 23:20 20150626-201500_Verloren
> in Afrika-(SOKO Leipzig).jpg
> -rwxr-xrwx 1 root root 2015-06-27 00:40 20150626-201500_Verloren
> in Afrika-(SOKO Leipzig).mp4
> -rw-r--r-- 1 root root 2015-08-30 23:20
> 20150626-221500_Raubvoegel (Video tgl. ab 20 Uhr)-(Polizeiruf
> 110).jpg
> -rwxr-xrwx 1 root root 2015-06-27 00:40
> 20150626-221500_Raubvoegel (Video tgl. ab 20 Uhr)-(Polizeiruf
> 110).mp4
> -rw-r--r-- 1 root root 2015-08-30 23:20
> 20150823-103000_tagesschau, 10_30 Uhr-(Tagesschau).jpg
> -rwxr--r-- 1 root root 2015-08-28 13:37
> 20150823-103000_tagesschau, 10_30 Uhr-(Tagesschau).mp4
> -rwxr-xr-x 1 root root 2015-08-30 23:18 generateThumbs.sh
> -rwxr-xr-x 1 root root 2015-09-03 09:13 removeThumbs.sh
> ====================================================================
> ====================================================================
> ==============
>
> Mit dem Script generateThumbs.sh (www.Obihoernchen.net) werden
> Bilddateien erstellt.
> Mit dem Script removeThumbs.sh möchte ich die Bilddateien löschen,
> zu denen es keine Videodatei mehr gibt.
> Mein Ansatz dazu:
> - Schleife über alle JPG-Dateien
> - Je JPG-Datei die Anzahl der Dateien mit gleichem Namen -
> Dateiendung egal - ermitteln.
> - Ist die Anzahl 1, so exestiert nur die JPG-Datei. Diese wird dann
> gelöscht.
> Probleme bereiten mir die Leerzeichen im Dateinamen. Da $COUNT damit
> unbestimmt ist, ist die Variable mit 1 vorbesetzt.
>
> ====================================================================
> ====================================================================
> ============== #!/bin/bash
>
> DIR="/var/cache/minidlna/mediathekview/"
>
> find "$DIR" -regex ".*\.jpg" -type f | while read -r FILEPATH
>
> do
> printf "%s\n" "--- Start Thumbnailremovement for ---"
> printf "%s\n" "$FILEPATH"
> THUMBFILE="'${FILEPATH%.*}'.*" # remove video ext. and add .jpg
> COUNT=$(ls -l " $THUMBFILE "| wc -l)
> COUNT=1
> if [ $COUNT -eq 1 ]; then
> printf "\e[1;33m%s\e[0m\n" "Video does not exists, removing
> thumbnail!"
> #rm $FILEPATH
> else
> printf "\e[1;33m%s\e[0m\n" "Video does exists, do nothing!"
> fi
> printf "%s\n" "--- End Thumbnailcreation ---"
> done
> exit 0
> ====================================================================
> ====================================================================
> ==============
>
> Hier die Ausgabe des Scriptea
> ====================================================================
> ====================================================================
> ============== 09:18:27# ./removeThumbs.sh
> .
> .
> .
> --- Start Thumbnailremovement for ---
> /var/cache/minidlna/mediathekview/20150823-103000_tagesschau, 10_30
> Uhr-(Tagesschau).jpg
> ls: Zugriff auf
> '/var/cache/minidlna/mediathekview/20150823-103000_tagesschau, 10_30
> Uhr-(Tagesschau)'.* nicht möglich: Datei oder Verzeichnis nicht
> gefunden Video does not exists, removing thumbnail!
> --- End Thumbnailcreation ---
> ====================================================================
> ====================================================================
> ==============
>
> Starte ich die bemängelte Zeile auf der Commandline klappt das!
>
> ====================================================================
> ====================================================================
> ============== 09:18:08# ls -l
> '/var/cache/minidlna/mediathekview/20150823-103000_tagesschau, 10_30
> Uhr-(Tagesschau)'.*
> -rw-r--r-- 1 root root 16349 Aug 30 23:20
> /var/cache/minidlna/mediathekview/20150823-103000_tagesschau, 10_30
> Uhr-(Tagesschau).jpg
> -rwxr--r-- 1 root root 109560036 Aug 28 13:37
> /var/cache/minidlna/mediathekview/20150823-103000_tagesschau, 10_30
> Uhr-(Tagesschau).mp4
> ====================================================================
> ====================================================================
> ==============
>
> Alle von mir gefundenen Tipps zu ls und Leerzeichen haben nicht
> funktioniert.
> Wer kann helfen, ggf auch mit einem alternatven Bash-Script.
Hallo,
lass detox über deine Dateien laufen, dann hast du keine Leerzeichen
mehr.
$ apt-cache show detox
...
Description-en: utility to replace problematic characters in filenames
detox is a utility designed to clean up filenames. It replaces difficult
to work with characters, such as spaces, with standard equivalents. It
will also clean up filenames with UTF-8 or Latin-1 (or CP-1252)
characters in them.
.
Features:
.
* Removal or replacement of upper ASCII Latin-1 (ISO 8859-1)
characters;
* Removal or replacement of UTF-8 encoded Unicode characters;
* Removal or replacement of spaces and other potentially tricky
characters;
* Trimming of excessive "_" and "-"s;
* Directory recursion, dry runs, verbose listings.
.
It is designed with safety in mind. It won't overwrite a file that
already exists, and it doesn't touch special files if not requested.
.
detox is useful to mass rename files automatically. As just one
example, you can use detox to easily standardize lots of files, as MP3
or movies, downloaded or stored inside a directory.
Gruss
Klaus
Reply to: