De acordo com este link , há uma opção bash para glob arquivos de ponto:
shopt -s dotglob
Se você usar bash, tudo que você precisa fazer depois disso é:
ls -A *20091021*
(não é possível testá-lo aqui)
ls em um arquivo de ponto
Meu diretório contém:
$ ls -A
.dotfile20091021 file20091020 file20091021
Eu quero listar todos os arquivos contendo 20091021 em seu nome.
Se eu correr:
$ ls -A *20091021*
file20091021
Se eu correr:
$ ls -A .*20091021*
.dotfile20091021
Posso obter os dois arquivos em um único comando "ls"?
De acordo com este link , há uma opção bash para glob arquivos de ponto:
shopt -s dotglob
Se você usar bash, tudo que você precisa fazer depois disso é:
ls -A *20091021*
(não é possível testá-lo aqui)
ls -A1 | grep "20091021"
Você pode simplesmente fazer
ls -a *20091021 .*20091021
(seguindo estritamente o seu pedido que você quer fazer isso em um único ls
)
Você está confiando em (qualquer shell que esteja usando) para fazer a expansão glob.
ls -lah | grep \.foo
.. pode ajudá-lo a resolver isso de uma forma portátil.
Por exemplo:
user@tower:~ ls -lah | grep \.mozilla
drwx------ 3 root root 4.0K 2007-11-14 06:17 .mozilla
user@tower:~
Eis o poder dos cachimbos :) Expandir isso é um exercício para o leitor. shopt não é portável e em sistemas que usam um shell estritamente POSIX (como traço) ele quebra. É melhor escrevê-lo de maneira simples e portável ... ou você fará o upload do seu script testado e aprovado para uma caixa que esteja rodando outra distro e o verá quebrar, horrivelmente.
NB, cada shell faz a expansão glob à sua maneira, amplamente determinada por sua licença. Por favor, por favor, evite os bashismos. O Ubuntu gastou dezenas de milhares de dólares para se livrar deles em seus produtos.
Tags command-line ls unix