Simplesmente:
rm *.txt *.csv
E se o seu shell suportar a expansão de chaves, você pode:
rm *.{txt,csv}
Desejo remover os arquivos .txt
ou .csv
em uma única linha.
O que eu tenho no meu diretório
tachomi$ ls
file1.csv file1.sql file1.txt file2.csv file2.sql file2.txt
Eu quero apenas .sql
arquivos, então quero saber se há uma maneira de executar comandos usando operadores lógicos como AND
ou OR
em uma única linha
tachomi$ rm *.txt AND *.csv
tachomi$ rm *.txt OR *.csv
Como remover todos os arquivos que correspondem a dois padrões fornecidos
Basta listar os dois padrões se quiser corresponder arquivos que correspondam a um padrão, isto é, arquivos que correspondam a *.txt
e arquivos que correspondam a *.csv
ou, em outras palavras, arquivos que correspondam a *.txt
ou *.csv
. (O aninhamento de quantificadores e operadores lógicos é importante!)
rm *.txt *.csv
Observe que, se um padrão não corresponder a nenhum arquivo, ele permanecerá intacto, portanto rm
reclamará que não é possível encontrar um arquivo chamado *.txt
ou *.csv
. Uma maneira comum de evitar uma reclamação é usar rm -f
, que silenciosamente ignora arquivos inexistentes.
rm -f *.txt *.csv
Não há nenhum operador que corresponda a strings que correspondam ao padrão 1 e ao padrão 2. Nesse caso, não há string que corresponda a *.txt
e *.csv
.
Em ksh, o padrão @(*.txt|*.csv)
ou *.@(txt|csv)
corresponde a sequências que correspondem a *.txt
ou *.csv
. Você pode usar este padrão no bash se você executar shopt -s extglob
primeiro; você pode usá-lo em zsh se executar setopt ksh_glob
primeiro ou usar a sintaxe nativa *.(txt|csv)
do zsh. Observe que, se não houver nenhum arquivo correspondente ao padrão composto, ele será transmitido para o comando como está. Em ATT ksh (e somente em ATT ksh, não em mksh, bash ou zsh), você pode usar ~(N)*.@(txt|csv)
para expandir para uma lista vazia se nenhum arquivo corresponder ao padrão. Você ainda precisaria usar rm -f
para que não haja reclamações sobre um argumento ausente.
rm -f ~(N)*.@(txt|csv)
No bash, execute shopt -s nullglob
primeiro para fazer todos os padrões se expandirem para a lista vazia se eles não corresponderem a nada.
shopt -s nullglob extglob; rm -f *.@(txt|csv)
Em zsh, use o qualificador N
glob ou execute setopt nullglob
primeiro.
rm -f *.(txt|csv)(N)
setopt nullglob extglob; rm -f *.@(txt|csv)
Tags command-line wildcards shell