Enquanto Michael Homer já escreveu o que aconteceu, aqui está porque aconteceu (dado o seu comentário sobre a resposta dele, acho que você já sabe, mas ).
O comando que você emitiu foi
ls -al /usr/lib/*valgrind*
As estrelas são interpretadas pelo shell mesmo antes de ls ser executado, substituindo-o por uma lista de nomes de arquivos correspondentes ao padrão. Agora, se houver apenas um nome correspondente (por exemplo, /usr/lib/valgrind
), é claro que a lista conterá apenas esse nome. Então o comando que realmente é executado é
ls -al /usr/lib/valgrind
Agora, ls verá que é dado um único argumento e a verificação desse único argumento revela que é um diretório. Como você não forneceu a opção -d
, para nomes de diretório, ela não listará a entrada do diretório, mas o conteúdo do diretório. E desde que foi dado apenas um nome de diretório single , ele também não imprimirá o nome do diretório primeiro (desde que você forneça um único nome de diretório como argumento, não há dúvida de qual diretório os arquivos listados pertencem; lembre-se que ls
não tem idéia de que o nome do diretório veio de uma expansão de nome de arquivo).
Se você quiser saber o nome real do diretório (lembre-se, o literal /usr/lib/valgrind
foi um palpite (embora muito provável); pode ser também /usr/lib/valgrind-3.7
), você pode usar
ls -ald /usr/lib/*valgrind*
Observe também que se houver um diretório oculto adicional .valgrind
ou um arquivo oculto como .valgrind-foo
in /usr/lib
, ele não será mostrado pelo comando ls
, apesar da opção -a
, porque a expansão do shell não se importa com as opções que você deu a ls
, e ls
não terá idéia de que deseja ver esses arquivos também, já que eles não estão incluídos sua lista de arquivos. Então, se você quer ter certeza de que os arquivos de pontos também estão listados, você terá que usar:
ls -ld /usr/lib/*valgrind* /usr/lib/.*valgrind*
Note que -a
é não necessário aqui, pois os arquivos de pontos dados como argumentos são listados incondicionalmente por ls
. É claro que se você quiser listar o conteúdo de qualquer diretório com valgrind
em seu nome, incluindo os arquivos de ponto, você precisará de -a
, já que esses arquivos de ponto não aparecem no comando linha após a expansão. Ou seja, nesse caso, você usaria
ls -la /usr/lib/*valgrind* /usr/lib/.*valgrind*
Por outro lado, se você estiver interessado no conteúdo dos diretórios correspondentes a .*valgrind*
, mas não nos arquivos de ponto contidos nele, você não usará -a
.
Se você estiver usando bash
(e possivelmente também para outros shells, mas não tenho certeza), você pode simplificar os dois comandos anteriores para
ls -ld /usr/lib/{,.}*valgrind*
respectivamente
ls -la /usr/lib/{,.}*valgrind*