Sim, você pode usar find
:
find [path] -type f -delete
Execute-o sem excluir primeiro para garantir que esteja segmentando os arquivos corretos. type f
significa procurar apenas arquivos, não diretórios.
Em uma linha de comando do Linux é possível - sem avisar - remover arquivos recursivamente (como em rm -r [path]
), mas preservar diretórios em [path]
?
EDITAR: Para os interessados, usei a resposta de Paulo abaixo para criar este script útil para uso em meus Makefiles (substitua $ (DIRS) pelos caminhos a serem limpos - por exemplo, diretórios bin e build):
clean:
@if [ $$(find bin -type f | wc -l) -gt 0 ]; \
then { \
echo "The following will be deleted:"; \
echo "------------------------------"; \
find $(DIRS) -type f; \
echo "------------------------------"; \
read -p "Continue (y/n)? " -n 1 -r CONTINUE; \
echo; \
}; \
else echo "No files to delete."; \
fi; \
\
if [[ $$CONTINUE =~ ^[Yy]$$ ]]; \
then find $(DIRS) -type f -delete; \
fi;
Tags command-line rm linux