O que os comandos grep fazem
Da sua saída, é evidente que você deseja localizar todos os arquivos que pertencem ao grupo "equipe" e criados na hora 22 (ou 22h no formato de 12 horas). Abordaremos isso abaixo, mas primeiro vamos descobrir o que seus comandos grep fazem e por que eles não são a ferramenta certa para o que você deseja.
grep que você faz são ligeiramente diferentes na forma como eles são interpretados, e sua abordagem não é adequada - você não deve tentar -
grep "staff*22"lê como "combina todas as linhas que começam com 'staf' e pode ou não ter nelas extra 'f', seguido imediatamente por '22'."$ echo "staff whatever 22" | grep 'staff*22' $ echo "staff22" | grep 'staf*22' staff22 $ echo "staf22" | grep 'staff*22' staf22 $ echo "staf22" | grep 'staff*22' staf22 -
grep "staff.*22"lê como "corresponde a todas as linhas que possuem 'equipe' nelas, zero ou mais caracteres entre (qualquer tipo de caractere) e número 22".$ echo "staff whatever 22" | grep 'staff.*22' staff whatever 22
Melhor abordagem
O comando ls em geral só deve ser usado para listagem interativa, ou seja, quando você quiser apenas dar uma olhada rápida no que está dentro de uma pasta. Quando for necessário encontrar arquivos específicos ou algum tipo de trabalho com esses arquivos via script, o comando find é o caminho a seguir. Ele tem -group variable, que ajudará a isolar todos os arquivos que pertencem ao staff group e -nevermt para localizar arquivos com tempo de modificação mais recente do que uma data específica. Por exemplo, o que você quer é provavelmente isso:
find . -group staff -newermt "2017-01-12 21:59:59"
Veja também: link