У меня следующая структура папок:
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)"'