GNU/Linux >> Linux Esercitazione >  >> Linux

Come stampare il nome dei file mancanti in una cartella?

Ho più di 2000 file in una cartella, ma nella cartella mancano alcuni file.

Il nome dei file è come

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 indica il giorno, mentre 0000 è l'ora.

Come scoprire quale file manca nella cartella? Ho ricevuto poche risposte su Google ma non riuscivo a capire come implementarle.

Risposta accettata:

Con zsh o bash4 , puoi usare l'espansione delle parentesi graffe per questo:

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

Notare le parentesi:

  • {001..006} significa espandere a 001 , 002 , … 006
  • {0000,0600,1200,1800} a ognuno dei precedenti aggiungi 0000 , 0600 , 1200 e 1800 .
  • >/dev/null è evitare l'output standard di ls -> vogliamo solo l'errore standard

Ora se un file non è presente, ls mostrerà un errore per questo:

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

Con ksh93 , sostituisci {001..006} con {1..6%.3d} .


Linux
  1. Come modificare l'estensione di più file?

  2. Stampa tutti i file in una cartella?

  3. Come scrivere il percorso di una cartella con spazio nel suo nome??

  4. Come posso cambiare il nome di molti file in una cartella?

  5. Come creare una nuova cartella o nuovi file in cPanel File Manager?

Come trovare file in Linux con il comando Trova

Come modificare ricorsivamente le autorizzazioni dei file in Linux

Come trovare i file usando la riga di comando nel terminale Linux

Come trovare file con il comando fd in Linux

Come modificare il nome host su Debian Linux

Come posso spostare file e directory nella cartella principale in Linux?