Você poderia usar
find /proc/[0-9]*/fd/ -name 24 2> /dev/null | wc -l
Ou, se você insistir em usar ls
(este deve ser um dos poucos exemplos onde é seguro fazer então):
ls /proc/[0-9]*/fd 2>/dev/null | grep -c '^24$'
Sua primeira tentativa falhou porque você estava redirecionando a saída para um arquivo ( > output.txt
), o que significa que o grep
nunca seria igual, pois não tinha saída para correspondência. Você pode usar pipes ( |
) como eu fiz acima ou usar um ;
ou &
para separar os comandos:
ls /proc/[0-9]*/fd 2> errors.txt > stdout.txt; grep "^24" stdout.txt | wc -l