Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

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

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
sphings
Member
Member
Beiträge: 73
Registriert: 3. Jun 2004, 13:27

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

Beitrag von sphings »

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
Zuletzt geändert von sphings am 9. Sep 2008, 20:58, insgesamt 1-mal geändert.
Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3203
Registriert: 25. Aug 2004, 02:13

Re: dateinamen auf bestimmtes zeichen überprüfen

Beitrag von robi »

sphings hat geschrieben: 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: Alles auswählen

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
Benutzeravatar
P6CNAT
Advanced Hacker
Advanced Hacker
Beiträge: 1060
Registriert: 24. Jul 2006, 14:26
Wohnort: Mainhausen

Re: dateinamen auf bestimmtes zeichen überprüfen

Beitrag von P6CNAT »

Hallo sphings,

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

Code: Alles auswählen

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
openSUSE Leap 15.1 64 Bit
KDE-Plasma 5.55
CPU: AMD A8-5500 mit integrierter GPU Typ AMD Radeon HD 7560D
sphings
Member
Member
Beiträge: 73
Registriert: 3. Jun 2004, 13:27

Re: dateinamen auf bestimmtes zeichen überprüfen

Beitrag von sphings »

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 "." ?
Benutzeravatar
P6CNAT
Advanced Hacker
Advanced Hacker
Beiträge: 1060
Registriert: 24. Jul 2006, 14:26
Wohnort: Mainhausen

Re: dateinamen auf bestimmtes zeichen überprüfen

Beitrag von P6CNAT »

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

Gruß
Georg
openSUSE Leap 15.1 64 Bit
KDE-Plasma 5.55
CPU: AMD A8-5500 mit integrierter GPU Typ AMD Radeon HD 7560D
sphings
Member
Member
Beiträge: 73
Registriert: 3. Jun 2004, 13:27

Re: dateinamen auf bestimmtes zeichen überprüfen

Beitrag von sphings »

stimmt.
Funktioniert jedenfalls.
Vielen dank.
Antworten