Se você souber o diretório que pode usar usando um destes comandos:
$ find foo/* -delete
$ rm -fr foo/*
$ find foo/* -exec rm -fr {} +
Se você tiver arquivos que começam com um ponto ( .
), você precisará de uma versão modificada de rm
.
$ rm -fr foo/{*,.*}
Exemplo
$ ls -l foo
drwxrwxr-x 6 saml saml 4096 Sep 27 09:43 .
drwx------. 263 saml saml 32768 Sep 27 09:42 ..
drwxrwxr-x 2 saml saml 4096 Sep 27 09:43 dir1
drwxrwxr-x 2 saml saml 4096 Sep 27 09:43 dir2
drwxrwxr-x 2 saml saml 4096 Sep 27 09:43 dir space1
drwxrwxr-x 2 saml saml 4096 Sep 27 09:43 dir space2
-rw-rw-r-- 1 saml saml 0 Sep 27 09:43 .dot space1
-rw-rw-r-- 1 saml saml 0 Sep 27 09:43 .dot space2
-rw-rw-r-- 1 saml saml 0 Sep 27 09:43 file1
-rw-rw-r-- 1 saml saml 0 Sep 27 09:43 file2
-rw-rw-r-- 1 saml saml 0 Sep 27 09:43 file space1
-rw-rw-r-- 1 saml saml 0 Sep 27 09:43 file space2
$ rm -fr foo/{*,.*}
rm: cannot remove directory: 'adir/.'
rm: cannot remove directory: 'adir/..'
$
$ ls -l foo/
total 0
$
Repetindo com um novo diretório de arquivos:
$ find foo/* -delete
$
Lidando com caracteres especiais
Se você tiver um diretório chamado foo tastic
que tenha um espaço, pode citá-lo, mas ainda usar um curinga:
Exemplo
$ rm -fr "foo tastic"/*
Caracteres Especiais
Frequentemente usarei esse truque para ver o que o shell pensa das minhas misturas de nome de arquivo antes de executá-las. No diretório de amostra que usei acima:
$ ls -1 "arquivo" * espaço de arquivo1 espaço de arquivo2
$ ls -1d "dir" * espaço dir1 espaço dir2
Ao fazer esses testes antes, você pode ter uma noção de quais arquivos / diretórios estarão em jogo quando um comando contendo o glob for usado.