Tente:
find /var/myfolder -type f -delete
Isso obtém todos os arquivos regulares em / var / myfolder e os exclui deixando apenas os diretórios.
Eu estou em uma pasta: /var/myfolder
.
Dentro há 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 de /var/myfolder
?
A estrutura (todos os diretórios, por exemplo, A, B, C etc., dentro de /var/myfolder
) deve permanecer intacta.
Com o zsh, use o qualificador de glob .
para corresponder apenas aos arquivos regulares :
rm -- **/*(.)
Isso exclui todos os arquivos regulares (não ocultos) no diretório atual e seus subdiretórios recursivamente. Adicione o qualificador D
glob para excluir arquivos regulares ocultos (e arquivos regulares em diretórios ocultos) também.
Você pode executar rm */*
em /var/myfolder
find . -depth -exec rm {} + 2>/dev/null
rm
não remove diretórios - basta executá-lo em tudo.
Para preservar links simbólicos para diretórios:
find . ! -type d -exec sh -c '
for f do [ -d "$f" ] ||
set "$@" "$f"; shift
done; rm "$@"' sh {} +
E eu acho que isso também deve funcionar, talvez, de uma maneira um pouco otimizada, se houver um lote de arquivos que possam precisar de testes na versão acima:
find . ! \( -type l -o -type d \) \
-exec rm {} + -o -exec sh -c '
for f do [ -d "$f" ] ||
unlink "$f";done' sh {} +
# This will delete all directory contents, including hidden files and
# subdirectories, without deleting the directory itself
# With GNU find:
find /path/to/directoryToEmpty -mindepth 1 -delete
# OpenBSD (and probably other BSDs)
find /path/to/directoryToEmpty -mindepth 1 -depth -exec rm -f {} \;
# To see what it deletes, in the order it will delete it:
find /path/to/directoryToEmpty -mindepth 1 -depth -print
rm var/myfolder/*/*
O arquivo excluirá tudo dentro das subpastas sem tocar nas próprias subpastas.
O primeiro *
é para os subdiretórios de myfolder
em si ( A
, B
, ...). O segundo *
é para os arquivos em A
, B
, etc.
SE houver mais pastas dentro de A
, B
, etc. Primeira execução:
rm /var/myfolder/*/*/*
, em seguida, execute rm /var/myfolder/*/*
.
Você também deve ser capaz de acessar o topo da árvore de diretórios em questão e, em seguida, executar:
find . -type f -print0 | xargs -0 rm -rf
e isso deve excluir todos os arquivos enquanto deixa a árvore de diretórios intacta. As opções -print0 e -0 podem ser omitidas se você tiver certeza de que não possui nomes de arquivos ou diretórios que contenham espaços.
O comando find faz distinção 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:
find . -type l
e veja se alguma coisa aparece antes de você executar o comando find anterior.
Basta usar o comando abaixo:
sudo rm -rf directory_in_which_you_have_content/*
---------------- OU ------------------------------ --------------------------
O '*' é todo para quando você usar * que irá apagar todo o conteúdo. Então, use o comando como este ou vá para o diretório em que você deseja excluir todo o conteúdo e use apenas o comando abaixo:
sudo rm -rf *