ls sintaxe para mostrar o nome do arquivo e o diretório

-1

Desejo usar o lscomando para que o resultado fique assim:

folder1/file1.doc
folder1/file2.doc
folder1/file44.doc
folder3/file1.doc
folder66/file4.doc
folder999/file.doc

Em outras palavras, quero exibir o nome do diretório e o nome do arquivo para cada linha.

cd myfolder
ls * > output.txt

Eu acho que preciso adicionar alguns comandos para a lslinha acima.

Isso é possível usando ls?

user3278770
fonte

Respostas:

0

É muito mais fácil usar find:

find folder* -type f > output.txt

O curinga será expandido para todos os nomes de pastas e listará recursivamente os arquivos com o caminho prefixado pelo nome da pasta.

slhck
fonte
0

Como discutido recentemente em Obter todos os caminhos de arquivo a partir de um certo ponto ... (no AU), você pode fazer o seguinte:

shopt -s globstar
ls -d1 **

Observe que as lsopções são D minúsculo e o número um. Observe que lsrealmente não está fazendo nada aqui, exceto listando seus argumentos; você pode muito bem dizer

printf "%s\n" **

Estes não estão limitados a um certo número de níveis.

Se você deseja incluir nomes que começam com um ponto ( .), também deve shopt -s dotglob.

G-Man
fonte
0

Se você tiver apenas um nível (ou seja, todos os seus subdiretórios atuais não possuem subdiretórios),

ls -1 */*

deve fazer o que quiser. Observe que a opção é o número um, não a letra ell.

Se você possui subdiretórios, mas não precisa de listagens de arquivos desses subdiretórios,

ls -1d */*

deve fazer o que quiser. Novamente, as opções são um dee, não ell dee.

Se o layout do seu arquivo for muito complexo, você precisará de uma findinstrução como

find . -print | sed s:./::
hymie
fonte
1
Mas isso não listará os arquivos um por linha. Será o nome da pasta e, em seguida, uma lista de arquivos.
slhck
Claro que tentei. Não digo que algo não esteja funcionando sem ter 100% de certeza ... O primeiro comando lista vários arquivos por linha no BSD. No GNU / Linux Bash, ele formata a lista para melhor legibilidade - também não um arquivo por linha. E também nãols -1 .
slhck
Minhas desculpas a você. Três máquinas diferentes responderam ao comando de três maneiras diferentes. Agora percebo que a primeira máquina funcionou "corretamente" porque um dos nomes de arquivo era tão longo que forçou uma única coluna. Atualizei minha resposta para usar o sinalizador -1 (um) que deve forçar um arquivo por linha.
Hymie