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