Se eu definir o diretório atual/de trabalho (navegando até ele usando cd
) para algum diretório específico e digitar:
rm *.xvg
O que esse comando fará? É verdade que o comando acima iráapenasexclua arquivos com a extensão.xvg
apenasno diretório de trabalho?
Fiquei nervoso em tentar fazer isso antes de perguntar, porque quero ter certeza absoluta de que o comando acima excluirá apenas .xvg
arquivosLOCALIZADO NO DIRETÓRIO DE TRABALHO.
Responder1
Sim, rm *.xvg
vaiapenasexclua os arquivos com a extensão especificada em seuatualdiretório.
AbomUma maneira de ter certeza de que você está realmente no diretório onde deseja excluir seus arquivos é usar o pwd
comando que exibirá seu diretório atual e, em seguida, fazer um ls
para verificar se você encontrou os arquivos que está esperando.
Se você estiver um pouco apreensivo ao emitir o rm
comando, há duas coisas que você pode fazer:
digite
ls *.xvg
para ver uma lista de quais arquivos seriam afetados por este comando.A menos que você tenha ummuitode arquivos, você também pode usar a
-i
opção de linha de comando pararm
(também existe paracp
emv
). O usorm -i *.xvg
solicitaria cada arquivo individual se não houvesse problema em excluí-lo, para que você pudesse ter certeza de que nada que não esperava estava sendo excluído. (Isso será entediante se você tiver muitos arquivos :)
Responder2
Você não precisa navegar até o diretório, basta usar
rm /some/dir/*.xvg
Caso você tenha um erro de digitação ou erro semelhante no caminho, onde /som/dir não existe:
cd /som/dir
rm *.xvg
excluirá acidentalmente todos os arquivos .xvg no diretório atual. O primeiro comando não funcionará e você não precisará fazer o cd novamente.
Uma maneira alternativa seria usar find:
find /some/dir/ -maxdepth 1 -type f -name "*.xvg" -delete
Responder3
Sim, rm *.xvg
excluirá apenas arquivos que terminam .xvg
em seu diretório atual. Aqui está o porquê.
Quando você digita um comando como este, o trabalho é dividido entre o shell que você está usando (vamos assumir o bash) e o comando binário.
Você pode localizar o binário digitando which rm
. Este pequeno programa cuida de desvincular arquivos. Programas como este podem ser iniciados a partir da linha de comando e podem ler uma lista de argumentos prog arg1 arg2 arg3
quando são inicializados. No caso de rm
, eles são interpretados como uma lista de nomes de arquivos totalmente qualificados a serem excluídos. Portanto, se você estiver em um diretório que contém o arquivo foo.bar
, digitar delete 'foo.*'
resultará em rm: foo.*: No such file or directory
. Observe as aspas simples em torno do padrão de arquivo, elas dizem ao shell para passar o argumento para o shell como está.
No entanto, se você digitar rm *.bar
no mesmo diretório, o arquivo será excluído. O que está acontecendo aqui é que o seu shell, que é o programa que você está usando para digitar comandos, está realizando algumas transformações antes de passar os argumentos para o comando. Um deles é chamado de 'expansão de nome de arquivo', também conhecido como 'globbing'. Você pode ver uma lista de expansões de nomes de arquivos bashaqui. Uma das expansões mais comuns é *
, que é expandida para nomes de arquivos no diretório atual.
Uma maneira simples de ver os globs em funcionamento é usar echo
, que imprime todos os argumentos passados a ele por meio do shell. Portanto, digitar echo *
no mesmo diretório resultará em foo.bar
. Então, quando você digita rm *.bar
, o que realmente acontece é que o shell expande a lista de argumentos para foo.bar
e depois passa isso para o rm
comando.
Existem algumas maneiras de controlar o globbing. Nas versões recentes do bash, por exemplo, você pode ativar uma opção chamada globstar, que fará expansão recursiva. A digitação echo **/*.bar
mostrará uma lista de todos os arquivos que terminam em .bar
todas as subpastas. Portanto, digitar rm **/*.bar
bash habilitado para globstar excluirá recursivamente todos os arquivos correspondentes nas subpastas.
Responder4
Comando:
rm ./*.pgm
funciona para mim
Comando:
rm *.pgm
dá comando de erro (em polonês, traduzido):
rm: wrong option - '1'
Use "rm ./-1000.pgm" to delete the file '-1000.pgm'.
Write "rm --help" for information.
em
bash --version
GNU bash, wersja 4.4.19(1)-release (x86_64-pc-linux-gnu)