Quero remover qualquer arquivo que pareça estar wordpress-891.sql
no diretório atual (não dentro de subdiretórios).
Funcionará rm wordpress-*.sql
ou também removerá correspondências de subdiretórios?
Responder1
Não. O globbing normal *
não é recursivo e nem é rm
.
Se o nome de um diretório corresponder, ele não será removido - você precisa do -r
sinalizador para excluir um diretório.
Portanto, é seguro fazer isso se tiver certeza de que deseja excluir esses arquivos.
Você também pode tornar rm
interativo
rm -i wordpress-*.sql
então ele pedirá confirmação antes de excluir cada arquivo
Responder2
Sim, funciona para você e remove todos os arquivos com esse esquema no diretório atual. E NÃO, ele não remove arquivos dos subdiretórios.
Sempre que você não tiver certeza do que acontece ao executar um comando como:
rm wordpress-*.sql
então basta executá-lo usando ls
:
ls wordpress-*.sql
os arquivos que você vê na saída são os que serão removidos.
Quando você está tentando obter uma lista como: foo*
, é melhor usar -d
switch with ls
para evitar listar arquivos em um diretório chamado foobar/
etc.
ls -d foo*
Este truque funciona para comandos que não são usados para fazer o trabalho recursivamente.
A outra coisa que você pode fazer é digitar a entrada desejada, por exemplo: wordpress-*
então pressione Ctrl+ Alt+ *e agora todas as correspondências são digitadas automaticamente na frente do seu comando.
Responder3
Não, rm
não recorre a subdiretórios.
VerExclua os arquivos correspondentes em todos os subdiretórios - SuperUserpara métodos de exclusão de arquivos em subdiretórios.
Se você estiver preocupado em excluir acidentalmente algo importante, use gvfs-trash
(que envia arquivos para a lixeira) em vez de rm
(que exclui arquivos permanentemente).
Responder4
Se desejar localizar e excluir todos os arquivos correspondentes, como wordpress-*.sql
, você pode usar find
o comando. :)
Por exemplo, você gostaria de remover todos os arquivos correspondentes wordpress-*.sql
em test_dir
, faça o seguinte.
cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;
Sempre que find
o programa realmente encontra um arquivo correspondente, ele tenta executar um comando após -exec
a opção. Neste caso rm -f {}
será executado e {}
será alterado para o nome do arquivo correspondente. Por exemplo
rm -f wordpress-169.sql
Você também pode definir a profundidade dos subdiretórios com -maxdepth
a opção.
cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;
Observe que você deve especificar -maxdepth
a opção antes de outras opções. Caso contrário, você poderá obter resultados que realmente não deseja ver.