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.
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.
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
touch -t 201311220000 /tmp/timestamp
Agora exclua os arquivos GNU find
(assumindo no diretório atual) que correspondem ao carimbo de hora, por exemplo:
find . -type f ! -newer /tmp/timestamp -delete
ou não GNU encontrar
find . -type f ! -newer /tmp/timestamp -exec rm {} \;
type -f
limita a ação apenas aos arquivos.
Com o GNU ou alguns BSD find
s:
find . ! -newermt 2013-11-22 ! -type d -delete
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.
find /path/to/directory/ -mtime +<number of days> -name '<file name>' -exec rm -rf {} \;
exemplo:
find /Netap_fileshare_backup/SQL/DB_backups/xeo/ -mtime +15 -name 'ORA_XEO*' -exec rm -rf {} \;
Nesse caso, ele removerá todos os arquivos que começam com "ORA_XEO" com mais de 15 dias.
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á removido example.cp
- ele será removido example.tar
- que costuma ser removido
find /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.