Eu tenho um diretório que contém um grande número de arquivos (como logs para todos os dias do ano). Gostaria de remover todos os arquivos criados antes, digamos 22/11. Como posso conseguir isso? Devo usar o find
exec -rm
? Estou usando o ksh.
26
Respostas:
O uso
find
ainda é a maneira preferida de excluir arquivos. Veja http://mywiki.wooledge.org/UsingFind para obter mais informações.Uma maneira de fazer isso é criar um arquivo com o carimbo de data / hora. por exemplo
Agora exclua os arquivos GNU
find
(assumindo no diretório atual) que correspondem ao carimbo de hora, por exemplo:ou não GNU encontrar
fonte
type -f
limita a ação apenas aos arquivos.Com o GNU ou alguns BSD
find
s:Observe que ele verifica a hora da última modificação dos arquivos. Em alguns BSDs, você pode usar
-newerBt
no lugar de-newermt
para verificar o tempo de nascimento do inode do arquivo, se disponível.fonte
exemplo:
Nesse caso, ele removerá todos os arquivos que começam com "ORA_XEO" com mais de 15 dias.
fonte
rm -rf
comando, o primeiro comando removeria tudo o que estiver contido em qualquer diretório anterior a esses 15 dias. (Além disso, por que o torno parêntese-name
?)example.jar
- ele será removidoexample.cp
- ele será removidoexample.tar
- que costuma ser removidofind /path/to/directory/ -mtime +<number of days> \( -name '*.jar' -o -name '*.cp' \) -name 'ex*' -exec rm -rf {} \;
find
você deve usar o-daystart
modificador para coagir o-mtime
valor à meia-noite.