Execute o comando ls
no diretório atual e obtenha a saída:
$ ls
Applications Documents Library Music Public
Desktop Downloads Movies Pictures
Eu gostaria de enumerá-los como:
1. Applications
2. Desktop
3. Documents
4. Downloads
5. Library
6. Movies
7. Music
8. Pictures
9. Public
Isso pode ser alcançado usando de less
maneira intermediária
ls | less -N
Como enumerá-los de maneira direta?
command-line
Cálculo
fonte
fonte
Respostas:
Ou simplesmente faça:
de
man nl
:fonte
Você deve canalizar a saída
ls
para outro comando. Minha sugestão é usarawk
na desta forma :Observe que o arquivo
file\nnewline
contém um caractere de nova linha\n
em seu nome que é escapado pela opção-b
.a opção
--group-directories-first
exibirá os diretórios antes dos arquivos.Outra maneira possível é usar o loop for (mas, neste caso, colocar os diretórios no início da lista se tornará mais difícil):
fonte
se apenas mostrar um número for o caso, você terá várias opções, bem como o seu
less -N
caminho:Se você quiser numeração de saída personalizada, sugiro usar
find
e fazer o que quiser imprimir:POSIXly, você faria:
fonte
i
deve ser inicializado com antecedência:i=0; find ...
-exec sh -c '....'
está sendo executado sob um shell sh separado.Você também pode fazer isso inteiramente com um pequeno script do Bash:
Você pode até ser chique e digitar o número da linha para obter mais de 9 resultados:
Uso
Supondo que você salvou o script como um arquivo executável
numbered-ls.sh
no diretório de trabalho atual:O argumento
DIRECTORY
é opcional e o padrão é o diretório de trabalho atual.Explicação
Se o script foi chamado com um argumento, altere o diretório de trabalho para o caminho no primeiro argumento.
Combine todas as entradas do diretório de trabalho atual e examine-as. Para cada entrada, incremente um contador e imprima seu valor junto com o nome da entrada. Os caracteres de quebra de linha no nome da entrada são substituídos por
^N
.Canalize a saída
cat -vt
para lidar normalmente com nomes de arquivos que contêm caracteres não imprimíveis que o terminal pode interpretar como caracteres de controle.fonte