Tengo más de 2000 archivos en una carpeta, pero faltan algunos archivos de la carpeta.
El nombre de los archivos son como
GLDAS_NOAH025SUBP_3H.A2003 001,0000 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 001,0600 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 001,1200 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 001,1800 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 002,0000 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 002,0600 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 002,1200 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 002,1800 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 003,0000 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003003.0600 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 003.1200 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 003.1800 .001.2015210044609.pss.grb
001
indica día, mientras que 0000
es la hora.
¿Cómo averiguar qué archivo falta en la carpeta? Obtuve pocas respuestas en google, pero no pude descubrir cómo implementarlas.
fuente
Respuestas:
Con
zsh
obash4
, puede usar la expansión de llaves para eso:Observe los corchetes:
{001..006}
medios se expanden para001
,002
, ...006
{0000,0600,1200,1800}
a cada uno de los add anterior0000
,0600
,1200
y1800
.>/dev/null
es evitar la salida estándar dels
-> solo queremos un error estándarAhora, si un archivo no está presente,
ls
mostrará un error para eso:Con
ksh93
, reemplazar{001..006}
con{1..6%.3d}
.fuente
{001..365}
Para mí funciona{0000..1800..600}
formulario..{00,06,12,18}00.
.Una variación de la solución @chaos (bash 4.0 o superior o zsh 4.3.11 y superior):
o
para imprimir solo el día faltante + hora
fuente
Si bien la respuesta del caos es buena para usarse en shells interactivos, esta puede usarse como un script POSIX, por ejemplo, si necesita hacerlo periódicamente y / o hacerlo en otras computadoras.
(
seq
o POSIX no especifica la expansión de llaves).fuente
Cree los nombres de archivo en un bucle y luego pruebe la inexistencia de un archivo:
Nota: no garantizo que este ejemplo esté libre de errores. Es un ejemplo, no un script de trabajo conocido.
Portabilidad: necesidades
ksh
,bash
ozsh
y un sistema GNU con elseq
comando disponibles.fuente