GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo imprimir el nombre de los archivos que faltan en una carpeta?

Tengo más de 2000 archivos en una carpeta, pero faltan algunos archivos en la carpeta.

Los nombres de los archivos son como

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 día, mientras que 0000 es la hora.

¿Cómo saber qué archivo falta en la carpeta? Obtuve pocas respuestas en Google, pero no pude descubrir cómo implementarlas.

Respuesta aceptada:

Con zsh o bash4 , puede usar la expansión de llaves para eso:

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

Fíjate en los corchetes:

  • {001..006} significa expandir a 001 , 002 , … 006
  • {0000,0600,1200,1800} a cada uno de los anteriores agregue 0000 , 0600 , 1200 y 1800 .
  • >/dev/null es evitar la salida estándar de ls -> solo queremos error estándar

Ahora, si un archivo no está presente, ls mostrará un error por eso:

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 , reemplaza {001..006} con {1..6%.3d} .


Linux
  1. Cómo encontrar todos los archivos dispersos en Linux

  2. ¿Cómo establecer el nombre de un hilo en Linux pthreads?

  3. ¿Cómo obtengo el nombre de usuario en un Makefile?

  4. ¿Cómo muevo archivos y directorios a la carpeta principal en Linux?

  5. ¿Cómo configurar los permisos de Linux para la carpeta WWW?

Cómo encontrar archivos en Linux con el comando Buscar

Cómo cambiar recursivamente los permisos de archivos en Linux

Cómo encontrar archivos usando la línea de comandos en la terminal de Linux

Cómo encontrar archivos con el comando fd en Linux

Cómo cambiar el nombre de host en Debian Linux

¿Cómo puedo filtrar recursivamente el nombre de los archivos que quiero con comodines?