![Exclua todos os arquivos em uma pasta com carimbo de data/hora no nome do arquivo](https://rvso.com/image/164724/Exclua%20todos%20os%20arquivos%20em%20uma%20pasta%20com%20carimbo%20de%20data%2Fhora%20no%20nome%20do%20arquivo.png)
Tenho que remover todos os arquivos de uma pasta cujos nomes de arquivo tenham fcrjlog-11-21-2019-1.txt
formato. Quero remover todos os arquivos com esse tipo de nome em uma pasta.
Responder1
find . ! -type d -name 'fcrjlog-??-??-????-?.txt' -delete
(substitua -delete
por -exec rm -f {} +
se find
não suportar a extensão não padrão -delete
).
?
é o operador curinga que significaqualquer caractere único. Substitua por [[:digit:]]
para corresponder apenas caracteres de dígitos decimais (0123456789).
! -type d
exclui os arquivos do tipodiretório(que -delete
não poderia ser removido a menos que estivessem vazios de qualquer maneira), você pode substituir por -type f
para ser ainda mais restritivo (incluir apenasregulararquivos com exceção de todos os outros tipos de arquivos, incluindo link simbólico, diretório, soquete, fifo, dispositivo...). GNU find
também oferece suporte -xtype f
para selecionar os arquivos que são determinados comoregularapós a resolução do link simbólico.
Substitua fcrjlog
por *
para corresponder a qualquer número de caracteres, ou ?*
a qualquer sequência de caracteres não vazia, ou [!.]*
a qualquer sequência de caracteres não vazia, a primeira das quais não é .
(para excluir arquivos ocultos).
Responder2
É comum exibir algumas das coisas que você já tentou - dessa forma você obterá mais respostas. Para esta questão, você precisa pesquisar expressões regulares e compreender alguns dos conceitos. Presumo que o "x" em seus carimbos de data e hora sejam números. Nesse caso, esta expressão regular irá ajudá-lo a começar:
/tmp>ls | grep -E "[0-9]{2}\-[0-9]{2}\-[0-9]{4}\-[0-9]{1}.txt$"
test-12-12-1234-9.txt
/tmp>rm $(ls | grep -E "[0-9]{2}\-[0-9]{2}\-[0-9]{4}\-[0-9]{1}.txt$")
Dividindo as várias peças:
"
[0-9]{2} -- Exactly two numeric characters
- -- A literal dash "-"
[0-9]{2} -- Exactly two numeric characters
- -- A literal dash "-"
[0-9]{4} -- Exactly four numeric characters
- -- A literal dash "-"
[0-9] -- One numeric character
. -- Any character. Use \. to insist on a dot
txt -- The literal string "txt"
$ -- An anchor that means the txt has to be at the end of the line
"