Gostaria de excluir todos os arquivos, mas mantenha a estrutura da pasta. Há algum jeito?
NOTA: (Estou usando o GNU bash 4.1.5).
Gostaria de excluir todos os arquivos, mas mantenha a estrutura da pasta. Há algum jeito?
NOTA: (Estou usando o GNU bash 4.1.5).
Respostas:
Tente o seguinte:
find . ! -type d -exec rm '{}' \;
Isso excluirá todos os arquivos, excluindo diretórios, abaixo do diretório de trabalho atual. Seja extremamente cuidadoso com este comando.
Se a versão da find
sua máquina suportar, você também poderá usar
find . ! -type d -delete
find
comando nunca vê as aspas. Apenas vê o {}
marcador como um argumento.
-exec command {} +
" & this " -exec command ;
". Eu usei o \;
no passado apenas nunca o '{}'.
Você pode usar o comando find
para localizar todos os arquivos, mas manter a estrutura de diretórios:
$ find /some/dir -type f -exec rm {} +
De acordo com as perguntas e respostas sobre Unix e Linux, intitulado: gnu find and masking the {} for some shells - what? , escapar do {}
tique único ( '
) não parece mais ser necessário nas conchas modernas, como o Bash.
A maneira mais fácil de excluir todos os arquivos regulares do diretório e subdiretórios atuais recursivamente:
zsh -c 'rm **/*(.)'
Somente o zsh tem qualificadores de globbing para combinar arquivos por tipo. No entanto, o rm
comando não funciona em diretórios; portanto, no bash, você pode usar
shopt -s globstar
rm **/*
Isso não funciona para outros comandos que rm
não sejam . Em geral, você pode usar find
:
find . -type f -delete
ou se o seu find
não suportar -delete
:
find . -type f -exec rm {} +
Eu tinha requisitos semelhantes para excluir arquivos de um caminho e seus subdiretórios (filtragem por tempo) sem excluir a estrutura de diretórios.
E eu usei o formato abaixo, que funcionou para mim.
encontre / test123 / home / arquivo_de_teste_de_teste / data / nfs -mtime +6 -type f -exec rm {} \;
Syntex: find (caminho do arquivo) -mtime (maior ou menor que dias) -tipo f -exec rm {} \;
-type: Mencione o tipo de arquivo "f" para o diretório "d" -exec: execute o comando rm: remove {}: saída do comando find
Nota: Teste-o antes de usá-lo. Por favor, sinta-se livre para corrigir ou atualizar se eu perdi alguma coisa.
find ... rm
estrutura básica já foi abordada, não tenho certeza de que seja uma contribuição valiosa como uma nova resposta a essa pergunta.