Quero remover qualquer arquivo parecido wordpress-891.sql
com o diretório atual (não dentro dos subdiretórios).
Irá rm wordpress-*.sql
executar o truque ou também removerá correspondências dos subdiretórios?
command-line
bash
HorusCoding
fonte
fonte
rm
não faz a expansão do nome do arquivo ...rm "foo*"
tentaria remover um arquivo com um asterisco literal no nome.Respostas:
Não. O globbing normal
*
não é recursivo e nem érm
.Se um nome de diretório corresponder, ele não será removido. Você precisará 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
interativoentão solicitará confirmação antes de excluir cada arquivo
fonte
Sim, ele faz o truque para você e remove todos os arquivos com esse esquema no diretório atual. E NÃO, ele não remove arquivos dentro dos subdiretórios.
Sempre que você não tiver certeza do que acontece quando você executa um comando como:
então execute-o usando
ls
: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 comls
para evitar listar arquivos dentro de um diretório chamadofoobar/
etc.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-*
pressione Ctrl+ Alt+ *e agora todas as correspondências são digitadas automaticamente na frente do seu comando.fonte
printf "%s\n" wordpress-*.sql
echo rm file*
. Especialmente olhar para nomes de arquivos hostis como-rf
rm ./*
ourm -- *
.xargs -0
@DavidFoersterls foo*
e você tem um diretório chamadofoobar
, você também terá uma listagem do conteúdo deste diretório, tão simplesls
não é realmente a melhor maneira do que arm
vai baterNão,
rm
não recursa através de subdiretórios.Consulte Excluir arquivos correspondentes em todos os subdiretórios - SuperUser para obter métodos para excluir arquivos nos subdiretórios.
Se você estiver preocupado em excluir acidentalmente algo importante, use
gvfs-trash
(que envia arquivos para a lixeira) em vez derm
(que exclui arquivos permanentemente).fonte
gvfs-trash
menção aprendi alguma coisa hoje quase não usá-lo ...Se você deseja encontrar e excluir todos os arquivos correspondentes, como
wordpress-*.sql
, pode usar ofind
comando :)Por exemplo, você deseja remover todos os arquivos correspondentes com
wordpress-*.sql
undertest_dir
, faça o seguinte.Sempre que o
find
programa realmente encontra um arquivo correspondente, ele tenta executar um comando após a-exec
opção. Nesse casorm -f {}
, será executado e{}
será alterado para o nome do arquivo correspondente. Por exemploVocê também pode definir a profundidade dos subdiretórios com a
-maxdepth
opçãoObserve que você deve especificar a
-maxdepth
opção antes de outras opções. Caso contrário, você poderá encontrar os resultados do que realmente não deseja ver.fonte
-maxdepth
. Use-exec rm -f {} +
em vez de-exec \;
, ou melhor ainda, apenas-delete