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 findsua máquina suportar, você também poderá usar
find . ! -type d -delete
findcomando 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 findpara 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 rmcomando não funciona em diretórios; portanto, no bash, você pode usar
shopt -s globstar
rm **/*
Isso não funciona para outros comandos que rmnão sejam . Em geral, você pode usar find:
find . -type f -delete
ou se o seu findnã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 ... rmestrutura básica já foi abordada, não tenho certeza de que seja uma contribuição valiosa como uma nova resposta a essa pergunta.