Você pode usar a opção -mindepth:
-mindepth levels
Do not apply any tests or actions at levels less than levels
(a non-negative integer). -mindepth 1 means process all files
except the command line arguments.
Eu tenho um script para limpar arquivos e diretórios antigos em uma área de log como:
find . -mtime +${NUM_DAYS} -type d -exec rm -rf '{}' \;
No entanto, se eu executar esses dois níveis a partir dos arquivos que foram alterados, ele geralmente mostrará o diretório pai, porque o registro de data e hora não é alterado por alterações em um subdiretório
Existe uma maneira que eu possa usar o find (ou outra coisa) para que eu não tente excluir o diretório pai?
Por exemplo, se eu tiver o sistema de arquivos:
# ls -ld /var
drwxr-xr-x 24 root root 4096 Aug 16 2010 /var
# ls -ld /var/net-snmp/
drwx------ 2 root root 4096 Aug 28 15:49 /var/net-snmp/
# ls -l /var/net-snmp/
total 4
-rw------- 1 root root 1174 Aug 28 15:49 snmpd.conf
Executar meu comando de localização de / with tentará remover / var de forma recursiva, mesmo que NUM_DAYS esteja definido para que o dia 28 de agosto esteja dentro da minha escala de tempo
Você pode usar a opção -mindepth:
-mindepth levels
Do not apply any tests or actions at levels less than levels
(a non-negative integer). -mindepth 1 means process all files
except the command line arguments.
Assumindo o linux, eu daria uma chance ao tmpwatch.