Именно tail -1
дает вам последнюю строку результата вызова grep
. Вероятно, это происходит из-за совпадения в последнем файле в последнем каталоге.
Вместо этого вам нужно перебрать каталоги в цикле. Это используетbash
:
for dir in folder_*/; do
files=( "$dir"/file_* )
grep -F 'Total CPU time used' "${files[-1]}"
done
Это будет перебирать каталоги. Для каждого каталога последний файл (в смысле словарного порядка )проверяется на предмет строки, которую вы ищете.
Я использую -F
с grep
, так как я ищу фиксированную строку, а не регулярное выражение.
Если вы хотите дополнительно получить имя файла в выводе grep
, то любой тег в /dev/null
в качестве последнего аргумента дляgrep
(grep
будет включать имя файла при сопоставлении более чем одного файлового операнда )или используйте grep
с -H
, если ваш grep
поддерживает это.
Вы можете подождать и надеяться, что операция в конечном итоге истечет, и, насколько мне известно, у вас остался единственный вариант hdparm -w /dev/device
.