Digamos que eu tenha um diretório com os arquivos a1, a2, a3, b1, b2, b3. Eu só quero combinar arquivos que começam com, a
mas não contêm 3
. Eu tentei, ls -I "*3" *a*
mas ele retorna a1 a2 a3
, mesmo que não queira que ele corresponda a3
. Isso é possível com ls
?
12
do not list implied entries matching shell PATTERN
no entanto, não explica o que significa implícita , mas acho que se aplica apenas a arquivos quels
recebem expansões glob - els
não expande aa*
, o shell faz isso .Respostas:
Somente:
shopt -s extglob
ativa globbing prolongado.a
coincide com o inícioa
!()
nega a partida dentro do()
...*3*
que é3
e qualquer coisa antes ou depois dela.fonte
set -s extglob
As respostas existentes indicam bem a melhor maneira de fazer isso com os globs; Incluírei isso porque, na maioria dos casos,
find
é uma opção melhor se você deseja criar scripts ou processar mais:Você pode fornecer a resposta
xargs
para ações fáceis ou umwhile read
loop para coisas mais complicadas.fonte
Uma maneira fácil é
a*
3
O comando UNIX é
ls -1
mostra um arquivo por linha.grep
normalmente encontra linhas que correspondem a um padrão, mas com-v
esse comportamento é invertido, ou seja, grep encontra linhas que não correspondem a esse padrão.fonte
ls
não é uma idéia Goob: mywiki.wooledge.org/ParsingLsCom
zsh
, usando o~
operador glob :Com
gnu
ls
você pode usar duas--ignore
opções:o primeiro ignora todos os nomes de arquivos que não começam
a
e o segundo ignora os nomes de arquivos que contêm3
fonte