Estou trabalhando com o Ubuntu e preciso encontrar em todos os arquivos do sistema com menos de 7 dias, começa com L
e são .txt
, em seguida, gerar um arquivo de saída com base nisso.
Isto é o que eu tenho até agora:
nohup find / -type f -ctime -7 -name \*.txt \*L | tee /tmp/log``-`hostname`-`date -I`.log
Mas de alguma forma a saída é
find: paths must precede expression: `*L'
Eu tentei várias maneiras de colocar o L
no script. O que pode ser feito para que isso funcione?
Esta é uma repostagem de uma pergunta excluída de outro usuário . Eu estava postando uma resposta quando de repente eles excluíram a pergunta, por isso estou repostando aqui para poder compartilhar minha solução com outras pessoas.
Isso funciona no Ubuntu 16.04; deve funcionar em outras versões também, pois está usando GNU
find
:Observe o
-regextype posix-extended
e o-iregex
com o padrão regex seguindo-o.E - para outros que podem se deparar com isso - esta variante desse script funciona bem para macOS Catalina (10.5.7) que usa BSD
find
:Observe os
-E
padrões regex (interpretar padrões regex) e-iregex
(sem distinção entre maiúsculas e minúsculas).Prefiro este método regex-bass porque posso alterar o padrão regex para ter várias extensões de arquivo como esta para localizar arquivos com
.txt
,.jpeg
epng
extensões: