У меня следующая структура папок:
A/B/C/D/E/00
A/B/C/D/E/01
.
.
A/B/C/D/E/23
Аналогично,
M/N/O/P/Q/00
M/N/O/P/Q/01
.
.
M/N/O/P/Q/23
Теперь в каждой папке от 00 до 23 содержится много файлов, которые я хотел бы посчитать.
Если я выполню эту простую команду:
ls / A / B / C / D / E / 00 |wc -l Я могу получить количество файлов в каждой из этих подкаталогов.Я хочу автоматизировать это или получить это итеративно.Кроме того, окончательный вывод, который я рассматриваю, - это файл, который должен выглядеть следующим образом:
C E RESULT OF ls /A/B/C/D/E/00 | wc -l RESULT OF ls /A/B/C/D/E/01 | wc -l
M Q RESULT OF ls /M/N/O/P/Q/00 | wc -l RESULT OF ls /M/N/O/P/Q/01 | wc -l
Итак, вывод должен выглядеть следующим образом
C E 23 23 4 6 7 4 76 98 57 2 67 9 12 34 67 0 2 3 78 98 12 3 57 213
M Q 12 10 2 34 32 1 35 65 87 8 32 2 65 87 98 0 4 12 1 35 34 76 9 67
Обратите внимание, значенияпосле алфавитов - значения количества файлов в 24 папках с 00, 01 по 23.
Использование подхода eval: я могу жестко закодировать и получить точные результаты.Но я хотел, чтобы это показывало данные за предыдущий день.Вот что я сделал:
d=`date --date ="1 days ago" +%Y%m%d`
month= `date +%Y%m`
eval echo YZ $d '"$(ls "/A/B/YZ/$month/$d/"'{20150800..20150823})'| wc -l)"'
Это прекрасно работает, потому что в указанном месте есть файлы внутри дочерних каталогов 20150800,20150801..20150823.Однако, когда я пытаюсь обобщить это, как показано ниже, он не показывает такой файл или каталог:
eval echo YZ $d '"$(ls "/A/B/YZ/$month/$d/"'{"$d"00.."$d"23})'| wc -l)"'
Есть ли что-то, что мне не хватает в приведенной выше строке?