linux + comando de localização com rm -rf

0

porque o seguinte comando removeu o diretório tmp em / var e como evitar isso?

  find /var/tmp -type d   -ctime -1  -exec rm -rf {} \;


pwd
/var/tmp
[root@linux /var/tmp]# find /var/tmp -type d -ctime -1 -exec rm -rf {} \;
find: /var/tmp: No such file or directory
    
por maihabunash 02.12.2014 / 10:53

2 respostas

2

O primeiro diretório find /var/tmp encontra é /var/tmp . Se você quiser pular essa (e usar o Gnu find ), então você pode mudar o comando para:

find /var/tmp -depth -mindepth 1 -type d -ctime -1  -exec rm -rf {} \;

ou

find /var/tmp -mindepth 1 -type d -ctime -1  -exec rm -rf {} \; -prune

Sem mensagens de erro -depth e -prune podem ocorrer porque rm -rf exclui subdiretórios - que já podem ter sido vistos por find . -depth faz com que rm -r seja chamado para os subdiretórios primeiro. Mas como deve ser o suficiente para executar rm -rf uma vez para cada subárvore, você pode alternativamente parar o processamento do conteúdo do diretório com -prune .

    
por 02.12.2014 / 10:57
0

Use o operador não lógico ! ou -not para excluir o caminho / var / tmp dos resultados. Nota: -not não é compatível com POSIX.

find /var/tmp -type d -ctime -1 ! -path /var/tmp -exec rm -rf {} \;

Ou

find /var/tmp -type d -ctime -1 -not -path /var/tmp -exec rm -rf {} \;
    
por 02.12.2014 / 12:04