Der ls-Befehl und die verflixten Leerzeichen

03/09/2015 - 18:00 von Joachim Hartmann | Report spam
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" " Start Thumbnailremovement for "
printf "%s" "$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" "Video does not exists, removing
thumbnail!"
#rm $FILEPATH
else
printf "\e[1;33m%s\e[0m" "Video does exists, do nothing!"
fi
printf "%s" " End Thumbnailcreation "
done
exit 0
==
Hier die Ausgabe des Scriptea
= :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!

= :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.

Gruß aus der Stadt der CeBIT
Jochen
 

Lesen sie die antworten

#1 Klaus Becker
03/09/2015 - 18:20 | Warnen spam
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" " Start Thumbnailremovement for "
printf "%s" "$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" "Video does not exists, removing
thumbnail!"
#rm $FILEPATH
else
printf "\e[1;33m%s\e[0m" "Video does exists, do nothing!"
fi
printf "%s" " 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

Ähnliche fragen