Как распечатать только результаты, отличные от нуля? - PullRequest
0 голосов
/ 16 июня 2019

У меня есть этот скрипт. Я хотел бы напечатать только ненулевые результаты. Моя среда Os X

find /PATH/ -type f -exec basename "{}" | grep -i "Word" | wc -l

Ответы [ 3 ]

2 голосов
/ 16 июня 2019

Вы можете использовать grep -v, чтобы удалить вывод, который состоит только из нуля (с пробелами перед ним, потому что это то, что печатает wc). С @joanis 'оптимизацией поиска это дает:

find /PATH/ -type f -iname '*Word*' | wc -l | grep -v '^ *0$'
2 голосов
/ 16 июня 2019

Во-первых, вот гораздо более быстрая команда поиска, которая будет выполнять то же самое:

find /PATH/ -type f -iname '*Word*' | wc -l

Теперь вы можете поместить эту оптимизированную команду в оператор if:

if [[ `find /PATH/ -type f -iname '*Word*' | wc -l` ]]; then
   find /PATH/ -type f -iname '*Word*' | wc -l
fi

Чтобы выполнить команду только один раз, сохраните результат в переменной:

count=`find /PATH/ -type f -iname '*Word*' | wc -l`
if [[ $count -gt 0 ]]; then
   echo $count
fi
0 голосов
/ 16 июня 2019

Когда вы учитываете выбранные записи, вам не нужно фильтровать по 0 попаданиям.Эта команда отображает все базовые имена, которые появляются один или несколько раз.

find . -type f -iname '*Word*' -printf "%f\n" | sort | uniq -c

Возможно, вы захотите добавить | sort -n в и посмотреть, какой файл встречается чаще всего.

Может быть, вы хотели что-то: Какчасто Word встречается в разных файлах.

grep -Rci while  | grep -v ":0$"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...