Estou em uma pasta: /var/myfolder
.
Dentro, existem outras pastas como: /var/myfolder/A/
/var/myfolder/B/
`/var/myfolder/C/
etc.
Dentro de cada um, existem alguns arquivos com nomes aleatórios. Como faço para remover todos os arquivos de todas as pastas dentro /var/myfolder
?
A estrutura (todos os diretórios, por exemplo, A, B, C etc., dentro /var/myfolder
) deve permanecer intacta.
-type f
! =! -type d
Com o zsh, use o
.
qualificador glob para corresponder apenas aos arquivos regulares:Isso exclui todos os arquivos regulares (não ocultos) no diretório atual e seus subdiretórios recursivamente. Adicione o
D
qualificador glob para excluir arquivos regulares ocultos (e arquivos regulares em diretórios ocultos) também.fonte
Você pode executar
rm */*
em/var/myfolder
fonte
rm
não remove diretórios - então execute-o em tudo.Para preservar links simbólicos para diretórios:
E acho que isso também deve funcionar, talvez, de uma maneira um pouco otimizada, se houver muitos arquivos que talvez precisem de teste na versão acima:
fonte
find
tem uma-xtype
opção para isso.fonte
Isso excluirá tudo dentro das subpastas sem tocar nas próprias subpastas.
A primeira
*
é para os subdiretórios demyfolder
si (A
,B
...). A segunda*
é para os arquivosA
,B
etc.Se houver mais pastas dentro
A
,B
etc. Primeiro prazo:rm /var/myfolder/*/*/*
em seguida, executarrm /var/myfolder/*/*
.fonte
Você também deve poder fazer o cd na parte superior da árvore de diretórios em questão e executar:
e isso deve excluir todos os arquivos enquanto mantém intacta a árvore de diretórios. As opções -print0 e -0 podem ser omitidas se você tiver certeza de que não possui nenhum nome de arquivo ou diretório que contenha espaços.
O comando find distingue entre arquivos (-type f) e links (-type l), portanto, isso deve deixar os links intactos, se houver. Não testado embora. Em caso de dúvida, execute:
e veja se algo aparece antes de você executar o comando find anterior.
fonte
rm
bandeira-r, -R, --recursive - remove directories and their contents recursively
se encaixa nisso?Basta usar o comando abaixo:
---------------- OU --------------------------------- -----------------------
O '*' significa tudo; assim, quando você usará *, excluirá todo o conteúdo. Portanto, use um comando como este ou vá para o diretório em que deseja excluir todo o conteúdo e use o comando abaixo:
fonte