@MichaelShav

Как изменить вывод grep?

Не могу разобраться с выводом grep. Нужно найти файлы, которые содержат определенную строку, но вывод сделать в формате Полный путь к файлу, имя и размер.
на данный момент делаю grep -r "something" /path
вывод: path/to/file:string
пытаюсь сделать Path: Path/to/file Name: Name Size: SizeKB
аналог -printf в find в общем ищу, там это делается добавлением -printf "Path: %p Name: %f Size: %kKB\n"
заранее спасибо))
  • Вопрос задан
  • 140 просмотров
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
У grep нет таких опций, поэтому нужно обработать вывод grep чем-нибудь еще.
Простенький пример вот:
grep -r -l "something" | xargs stat --format="Name: %n Size: %B"


Ну можно еще path и name конечно разделить, но это будет посложнее команда типа так:

while read; do
  MYPATH="${REPLY%/*}"
  MYNAME="${REPLY##*/}"
  SIZE="$(stat --format='%s' ${REPLY})"
  [[ "${MYPATH}" == "${MYNAME}" ]] && MYPATH=""

  echo "Path: ${MYPATH}/ Name: ${NAME} Size: ${SIZE}"
done<<<$(grep -r -l "alias")
Ответ написан
shambler81
@shambler81 Куратор тега Linux
find /etc/nginx  -type f  -exec grep -l 3dpaneli.ru {} \; | xargs ls -lah

find - искать в каталоге
-type f только имена файлов
-execвыполнить команду с найденым файлом
grep -l - не выводить сам греп а выводить имя файла в котором он нашел
{} - то что на выводе у find
\; - просто заканчиваем файнд
|- вывод передаем следующей команде
xargs ls -lah xargs почитай отдельно короче он передаст вывод пути файла на ls -lah и получаем все че хочеш
5fd0f0daa8e29240627639.png

если тебе нужно обрезать вообще все лишнее то тут уже можно awk в общем там уже будет проще удалить лишние колонки
спасибо кэп, отметил как решенный.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы