Como posso listar os arquivos em outro diretório (não atual)?

Como posso listar os arquivos em outro diretório (não atual)?

Se ls lista o conteúdo do diretório atual, existe um comando semelhante que lista o conteúdo de um diretório não atual, sem usar cd?

Responder1

Depois lsbasta digitar o caminho do diretório que deseja listar e você o obterá. Imagine que você está em seu diretório inicial, mas deseja listar arquivos /etc. Basta executar ls /etce você o listará.

Responder2

lsfará isso.

A sintaxe para lsé:

 ls flags file-or-directory-names

Pelo que estou ligandofile-or-directory-names, você pode listar os arquivos no diretório atual para listar apenas alguns arquivos. Por exemplo, ls -l foo barlistará informações apenas fooe bar(em formato longo, conforme forneci o -lsinalizador). ls baz*golistará todos os arquivos cujos nomes começam baze terminam com go(se houver).

Mas quando você dá umnome do diretóriopara ls, ele lista o conteúdo deesse diretórioem vez do diretório atual.

Então, para listar o conteúdo de /var/log, você simplesmente executaria:

ls /var/log

Se você der umrelativocaminho para o diretório - isto é, um que não comece com -então /ele procurará esse diretório dentro do diretório atual (assim como procura por arquivos). Mas ainda listará osconteúdodo diretório, como você deseja.

Como observação lateral, às vezes você pode achar que não deseja listar osconteúdode um diretório, mas apenas liste o diretório da mesma forma que um arquivo seria listado. Para fazer isso, você pode passar a -dbandeira. Por exemplo, isso aparece /var/logem formato longo (não éconteúdo, mas /var/logele mesmo):

ls -ld /var/log

Responder3

Tendo visto a resposta aceita, ainda não fiquei satisfeito. Como Daniel conhecia a solução? Pode apostar que eu mesmo li a página de manual e ainda não consegui descobrir como.

A página de manual de lsleituras:

Descrição: Lista informações sobre os ARQUIVOS (o diretório atual por padrão)...

Nada de útil aí. Então verifiquei o Manual do Programador POSIX:

Para cada operando que nomeia um arquivo do tipo diretório, ls deve escrever os nomes dos arquivos contidos no diretório, bem como qualquer informação associada solicitada.

Esta linha explica o comportamento do comando na solução aceita. O FILEoperando de lsCAN será um diretório e lslistará o conteúdo desse diretório. Exatamente o que o OP queria. MAS a implementação no Linux pode ser diferente da especificação aqui. Portanto, estamos no caminho certo, mas ainda não chegamos lá.

Então procurei o manual do coreutilspacote GNU, do qual lsfaz parte. Aqui está o que encontrei:

Para argumentos de linha de comando sem opção que são diretórios, por padrão ls lista o conteúdo dos diretórios ...

Isso explica tudo.

informação relacionada