У меня в папке более 2000 файлов, но в папке мало файлов.
Наименования файлов похожи
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
указывает день, а 0000
час.
Как узнать, какой файл отсутствует в папке? Я получил несколько ответов в Google, но не мог понять, как их реализовать.
источник
Ответы:
С помощью
zsh
илиbash4
вы можете использовать скобки для этого:Обратите внимание на скобки:
{001..006}
средства расширяться001
,002
...006
{0000,0600,1200,1800}
к каждому из вышеуказанных оных0000
,0600
,1200
и1800
.>/dev/null
чтобы избежать стандартного выводаls
-> мы хотим только стандартную ошибкуТеперь, если один файл отсутствует,
ls
покажет ошибку для этого:С
ksh93
, заменить{001..006}
на{1..6%.3d}
.источник
{001..365}
, для меня это работает{0000..1800..600}
форму..{00,06,12,18}00.
.Вариант решения @chaos (bash 4.0 или выше или zsh 4.3.11 и выше):
или
распечатать только пропущенный день + час
источник
Хотя ответ хаоса можно использовать в интерактивных оболочках, его можно использовать в качестве сценария POSIX, например, если вам нужно делать это периодически и / или делать это на других компьютерах.
(
seq
или расширение скобки не указано в POSIX.)источник
Соберите имена файлов в цикле, а затем проверьте отсутствие файла:
Примечание. Я не гарантирую, что этот пример не содержит ошибок. Это пример, а не известный рабочий скрипт.
Переносимость: потребности
ksh
,bash
илиzsh
и система с GNUseq
команды доступны.источник