GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie drucke ich den Namen fehlender Dateien in einem Ordner?

Ich habe mehr als 2000 Dateien in einem Ordner, aber einige Dateien fehlen im Ordner.

Namen der Dateien sind wie

GLDAS_NOAH025SUBP_3H.A2003001.0000 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003001.0600 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003001.1200 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003001.1800 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003002.0000 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003002.0600 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003002.1200 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003002.1800 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003003.0000 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003003.0600 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003003.1200 .001.2015210044609.pss.grb
GLDAS_NOAH025SUBP_3H.A2003003.1800 .001.2015210044609.pss.grb

001 zeigt den Tag an, während 0000 ist die Stunde.

Wie finde ich heraus, welche Datei im Ordner fehlt? Ich habe einige Antworten in Google erhalten, konnte aber nicht herausfinden, wie ich diese implementieren soll.

Akzeptierte Antwort:

Mit zsh oder bash4 , können Sie dafür die Klammererweiterung verwenden:

ls -d GLDAS_NOAH025SUBP_3H.A2003{001..006}.{0000,0600,1200,1800}.001.2015210044609.pss.grb >/dev/null

Beachten Sie die Klammern:

  • {001..006} bedeutet erweitern zu 001 , 002 , … 006
  • {0000,0600,1200,1800} Fügen Sie zu jedem der oben genannten Elemente 0000 hinzu , 0600 , 1200 und 1800 .
  • >/dev/null soll die Standardausgabe von ls vermeiden -> wir wollen nur Standardfehler

Wenn nun eine Datei nicht vorhanden ist, wird ls wird dafür einen Fehler anzeigen:

ls: cannot access GLDAS_NOAH025SUBP_3H.A2003004.0000.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003004.0600.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003004.1200.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003004.1800.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003005.0000.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003005.0600.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003005.1200.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003005.1800.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003006.0000.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003006.0600.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003006.1200.001.2015210044609.pss.grb: No such file or directory
ls: cannot access GLDAS_NOAH025SUBP_3H.A2003006.1800.001.2015210044609.pss.grb: No such file or directory

Mit ksh93 , ersetzen Sie {001..006} mit {1..6%.3d} .


Linux
  1. Wie ändere ich die Erweiterung mehrerer Dateien?

  2. Wie kann ich den Namen vieler Dateien in einem Ordner ändern?

  3. Wie erstelle ich einen neuen Ordner oder Dateien im cPanel-Dateimanager?

  4. Wie setze ich den Namen eines Threads in Linux pthreads?

  5. Wie verschiebe ich Dateien und Verzeichnisse in den übergeordneten Ordner in Linux?

So finden Sie Dateien in Linux mit dem Find-Befehl

So ändern Sie die Dateiberechtigungen in Linux rekursiv

So finden Sie Dateien über die Befehlszeile im Linux-Terminal

So finden Sie Dateien mit dem fd-Befehl in Linux

So ändern Sie den Hostnamen unter Debian Linux

Wie richte ich Linux-Berechtigungen für den WWW-Ordner ein?