• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] dateinamen auf bestimmtes zeichen überprüfen

sphings

Member
Hallo,

ich hab mal nen kleines Problem.
Ich habe ein Verzeichnis, in dem liegen ne menge dateien.
Jetzt möchte ich alle dateien mit der Endung .jpg überprüfen, ob der dateinema an bestimmten stellen im dateinamen bestimmte sonderzeichen hat.
Der korrekte Datename sieht so aus: 2008-08-13-000~0000
Es müsste also überprüft werden, ob alle 3 - an der richtigen position sind und das ~ auch.
Wenn dem nicht der fall ist soll eine Fehlermeldung ausgegeben werden.

Kann mir da jemand nen Ansatz geben?

Danke und Gruß

sphings
 
A

Anonymous

Gast
sphings schrieb:
Jetzt möchte ich alle dateien mit der Endung .jpg überprüfen, ob der dateinema an bestimmten stellen im dateinamen bestimmte sonderzeichen hat.
Der korrekte Datename sieht so aus: 2008-08-13-000~0000
Es müsste also überprüft werden, ob alle 3 - an der richtigen position sind und das ~ auch.
irgendwie hat dein korrekter Dateiname gar keine Endung. .jpg :???:
schau mal ob dir das hier weiterhilft, das sollte dir fehlerhafte Dateinnamen auflisten. Es geht sicher auch einfacher zu schreiben, aber hier hast du noch zusätzlich die Chance bei jeder Ziffer zumindestens grob ungültige Werte rauszufinden.

Code:
priv0001:/tmp # ls -l *.jpg
-rw-r--r-- 1 rob users 0 Sep  6 00:42 1998-08-13-000~0000.jpg
-rw-r--r-- 1 rob users 0 Sep  6 00:42 1998-8-13-000~0000.jpg
-rw-r--r-- 1 rob users 0 Sep  6 00:31 2008-08-13-000~0000.jpg
-rw-r--r-- 1 rob users 0 Sep  6 00:36 2008-8-13-000~0000.jpg
-rw-r--r-- 1 rob users 0 Sep  6 00:42 2100-08-13-000~0000.jpg
priv0001:/tmp # find -name "*.jpg" ! -name "[12][09][0-9][0-9]-[01][0-9]-[0-3][0-9]-[0-9][0-9][0-9]~[0-9][0-9][0-9][0-9].jpg" -ls
 33083    0 -rw-r--r--   1 rob      users           0 Sep  6 00:42 ./2100-08-13-000~0000.jpg
 33079    0 -rw-r--r--   1 rob      users           0 Sep  6 00:36 ./2008-8-13-000~0000.jpg
 33081    0 -rw-r--r--   1 rob      users           0 Sep  6 00:42 ./1998-8-13-000~0000.jpg

robi
 

P6CNAT

Advanced Hacker
Hallo sphings,

ich denke folgendes kleines Script sollte deine Anforderungen auch erfüllen.

Code:
for x in `ls`
do
  ls $x | grep ....-..-..-..~....jpg
  if [ $? -ne 0 ]
  then
    echo "Fehlermeldung"
  fi
done

Maßgeblich ist das Suchmuster im grep Kommando und die Abfrage des Rückgabewertes von grep mit $?
Das Ganze ist beliebig ausbaufähig.

Gruß
Georg
 
OP
S

sphings

Member
Danke P6CNAT,

ich sitze gerad nicht vor der linux kiste, aber ich denke das wird genau das sein, was ich brauche.
Kurze frage am rande, fehlt vor dem jpg nicht noch nen "." ?
 

P6CNAT

Advanced Hacker
Naja,
hast schon Recht, aber bei dem Beispiel kommt es auf einen Punkt (oder sonstige Patterns) mehr oder weniger nicht an :lol: .

Gruß
Georg
 
Oben