Следующий код проходит через ВСЕ каталоги по текущему пути для подсчета сжатых файлов xml:
for i in *xml.gz; do
echo "XML" "${PWD##*/}" "$i" $(gunzip -c $i | echo "scale=0; `wc -l`" | bc -l);
done
Я ищу способ выполнить цикл, скажем, на последних 5 каталогах, чтобы предотвратить подсчет ранее подсчитанных каталогов (и сократить время выполнения). Цикл for позволяет указать определенные каталоги, но мне все равно нужно подсчитывать только xml-файлы. Не могу найти синтаксиса, чтобы сделать и то, и другое.
Если вы хотите перечислить последние N файлов в зависимости от времени, вы можете использовать эту идею:
ls -tr
, чтобы получить самые новые файлы внизу списка
tail -5
, чтобы получить последние 5 строк. Таким образом, код будет примерно таким:
for i in `ls -tr|tail -5`.....