Como remover arquivos que confirmam um determinado padrão numérico eu removo assim agora no MacOS,
rm */sections.json.* */sections.json0* */sections.json1* all the way till 9
Como remover arquivos que confirmam um determinado padrão numérico eu removo assim agora no MacOS,
rm */sections.json.* */sections.json0* */sections.json1* all the way till 9
Supondo que você queira excluir os
sections.json.<anything>
arquivos¹sections.json<a-number-between-0-and-9>
, com ozsh
shell:Com o
bash
shell (onde com aextglob
opção implementa um subconjunto de operadores estendidos do ksh):(evite
[0-9]
no bash que em muitos sistemas corresponde a centenas de caracteres ao lado de 0123456789).Se o intervalo fosse maior que dígitos únicos de 0 a 9, você precisaria do
<0-123>
operador de correspondência de números decimais do zsh:Observe que isso
<0-123>
também corresponde a005
ou0000118
que também são representações inteiras decimais de números entre 1 e 123.Para excluir aqueles com 0 à esquerda, você usaria o operador
~
(exceto) como no lugar de , ou seja: *qualquer uma ou qualquer representação decimal inteira de um número entre 1 e 123, exceto aqueles que começam com ).extendedglob
(0|(<1-123>~0*))
<0-123>
0
0
Para corresponder ao mesmo sem esse operador dedicado,
bash -O extglob -O failglob
você precisaria construir um padrão complexo, como:Ou:
Para excluir aqueles com 0s iniciais.
Outra abordagem (de força bruta) no bash seria construir um
@(.*|0|1|2|...|122|123)
padrão, o que você poderia fazer com:(ambos
{x..y}
earray=(...)
são inicialmente do zsh).É mais fácil
zsh
onde há um operador de junção adequado e até mesmo um dedicado à junção usando operadores glob; você também pode usar uma função anônima para o array ser seus argumentos:Agora, se você quiser permitir qualquer coisa após os números, você não pode simplesmente acrescentar
*
, comosections.json<1-123>*
seria a correspondência desections.json124
onde<1-123>
corresponderia em12
e*
em 4, você precisaria acrescentar(|[^0-9]*)
zsh (ou^[0-9]*
withextendedglob
) ou?([^0123456789]*)
ou!([0123456789]*)
withbash -O extglob -O failglob
para garantir que o número permanece dentro do intervalo 1..123.¹ Observe que o seu,
*/sections.json1*
por exemplo, corresponderiadir/sections.json123.tar.gz
para que você não restringisse o intervalo a números de 0 a 9.Você também pode usar colchetes no bash como
Solução portátil POSIX: