Estou executando o seguinte comando:
find /var/www/html/content/processing -type d -mtime +1 -exec rm -rf {} \;
Gostaria de excluir todas as pastas da processing
pasta (a pasta de processamento nunca deve ser excluída).
O comando está excluindo a processing
pasta também. Como limite o script para excluir apenas as pastas nessa pasta?
Respostas:
A maneira mais fácil seria apenas adicionar
-mindepth 1
, o que ignorará a primeira hierarquia de profundidade e, portanto, deixará de fora o diretório pai.Além disso, você não precisa de uma
-exec
chamada extrarm
, apenasdelete
as pastas diretamente, se estiverem vazias.Se não estiverem vazios:
Se você é preguiçoso, também pode expandir um curinga. Como
*
não inclui o diretório atual por padrão (a menos quedotglob
esteja definido ), você também pode:No entanto, isso também não incluiria pastas ocultas, novamente devido à
dotglob
opção.fonte
O problema é que find retorna o diretório atual (.) Junto com os outros diretórios; portanto, ele exclui a pasta de processamento e os subdiretórios. Uma maneira rápida de contornar isso seria anexar a opção
que impede a localização do diretório atual e, por sua vez, impede que ele seja excluído.
Isso funcionaria se você estivesse executando o comando no diretório de processamento, para permitir o fato de estar usando um caminho absoluto:
E todo o comando seria:
fonte
-name
refere-se ao nome da base, ele nunca corresponde a nada com uma barra. Você provavelmente precisa usar-path
.Já respondi, ainda gostaria de listar outra abordagem.
find /var/www/html/content/processing -mindepth 1 -maxdepth 1 -type d
Isso excluirá o diretório principal (e também os subdiretórios), e agora você pode aplicar qualquer comando que desejarmos aplicar sobre ele.
>> Opções:
-mindepth 1: Para excluir o diretório raiz
-maxdepth 1: Para evitar a análise de subdiretórios. (Para um cenário específico questionado, você não precisa disso).
-type d: lista apenas os tipos de diretório. Esta opção deve vir após o uso mindepth maxdepth.
fonte
-maxdepth 1
? Por que-type d
duas vezes? Como isso é diferente da resposta aceita?