GNU encontra, exclui arquivos dentro de um diretório, mas mantém o próprio diretório

GNU encontra, exclui arquivos dentro de um diretório, mas mantém o próprio diretório

Passei a maior parte da tarde tentando descobrir isso.

Responder1

Para excluir todos os arquivos de qualquer diretório que esteja abaixo do atual e tenha um nome, node_modulesmantendo node_modules:

find . -path  '*/node_modules/*' -delete

(Isso foi testado com GNU, findmas espero que o BSD/OSX findse comporte de forma semelhante.)

Exemplo

Vamos criar um node_modulesdiretório com alguns arquivos:

$ mkdir -p node_modules/dir{1..3}
$ touch node_modules/file{1..3}

Agora, vamos ver quais arquivos esse findcomando retorna:

$ find . -path  '*/node_modules/*'
./node_modules/dir3
./node_modules/dir1
./node_modules/file3
./node_modules/file2
./node_modules/file1
./node_modules/dir2

Isso mostra os arquivosdentro node_modulesmasnãoo node_modulespróprio diretório. Assim, podemos deletar os arquivos com:

$ find . -path  '*/node_modules/*' -delete
$ ls
node_modules

informação relacionada