Менее многословный способ - использовать рекурсивный grep (если ваша система его поддерживает):
grep -rl --include="*.htm*" ".swf" test|xargs ls -l|awk '{ print $9 "," $5 }'
Объяснение:
- Grep рекурсивно с использованием флага "rl"
- включает шаблон файла "* .htm"
- поиск строки ".swf" в каждом файле htm *
- поиск только по "тесту" каталог
- направляет результат в xargs , где каждое имя файла становится аргументом команды "ls -l"
- Затем используйте awk , чтобы получить только имя файла и размер файла. Используйте запятую "," между 9-м и 5-м столбцами в awk print, чтобы получить вывод csv.
Не стесняйтесь заменять "ls -l" на читаемые человеком варианты, такие как "ls -lk" или "ls -lh"
Кроме того, в вашем скрипте вы можете просто напечатать только 2-ю строку каждого файла (ту, которая содержит размер). Вы можете просто передать и использовать grep следующим образом: grep "[0-9] [KB]"
Ниже приведена полная команда:
find . -type f \( -iname \*.html -o -iname \*.htm -o -iname \*.xhtml \) -exec grep -il ".swf" {} \; -printf '%k KB - \t %p\n'| grep "[0-9] [KB]"