Digamos que quando eu comando ls, a saída é:
file1 file2 file3 file4
É possível exibir apenas uma certa coluna de saída, neste caso, arquivo2? Eu tentei o seguinte sem sucesso:
echo ls | $2
Basicamente, tudo que eu quero fazer é repetir apenas a segunda coluna, neste caso, eu quero repetir:
file2
ls
saída?ls
e depois de criar alguns arquivos / pastas, pode não ser mais o que você deseja. Como terdon apontou aí com certeza são melhores maneiras de obter o que você querRespostas:
O comando a seguir formatará a saída ls em uma coluna
fonte
ls -1 /directory | head -2 | tail -1
ouls -1 /directory | perl -ne 'print if $. == 2'
ls | sed -n '1p;q'
parece mais simplesVocê está procurando por isso:
No entanto, supondo que você tente usar esse nome de arquivo posteriormente, não faça isso, pois ele quebrará os nomes de arquivos que contêm espaço em branco. Em vez disso, coloque os arquivos em uma matriz e obtenha a segunda, que evita a necessidade de fazer qualquer análise:
A ordem em que você recupera os arquivos depende do valor de
LC_COLLATE
. Como tal, convém definirLC_COLLATE=C
primeiro, se quiser uma classificação "padrão" em todos os casos de canto.fonte
1
em conchas sensíveis (zsh, yash, fish, csh, tcsh, rc, es ...) e0
em ksh e bash. Para uma solução portátil para todas as conchas do tipo Bourne, você pode usar: emset -- *; printf '%s\n' "$2"
vez disso.Você precisaria adicionar
-C
comols
usa o modo de coluna única quando a saída não for um terminal.awk
depois imprime a segunda coluna:fonte
Eu acho que você está procurando
Não mostrará permissão, proprietário, grupo, data, tamanho ... mas um simples nome de arquivo em uma única coluna.
fonte
A única maneira de trabalhar para mim é adicionar "-all". Isso é:
Porque
-all
adicione mais colunas como usuário, permissões etc.fonte
Como já foi mencionado - o uso de colunas para analisar a
ls
saída não é muito robusto, porquels
quebra as linhas de acordo com o comprimento do nome do arquivo e a largura do terminal. Muitas vezes, é interessante exibir uma única coluna de uma lista de elementos. Você pode fazer isso usando o comando cut:Exibirá
Observe que
-d
permite selecionar o delimitador de coluna, por exemplo, comvocê pode exibir a segunda coluna de uma lista separada por vírgula.
fonte
Suponha que, se você deseja exibir apenas o nome de arquivo específico no caminho atual, use o comando abaixo
comando:
fonte
Isso é complicado, porque a análise
ls -C
depende de:ls -C
)ls -C
saída é colunar, mas pode ser configurada para vários números de espaços como separadores de campo.ls
opções de exibição específicas escolhidas).Por enquanto, vamos começar com o problema mais fácil ( ou seja, não o nº 4 acima), supondo que não haja espaço em branco nos nomes de arquivos . Para imprimir a coluna 2, isso funciona:
Desenrolando isso:
COLUMNS=$COLUMNS
garante que o comprimento da coluna alimentado|
permaneça consistente com a exibição atual do terminal. Alterar isso para um valor arbitrário também funciona, portantoCOLUMNS=50
ouCOLUMNS=70
causarials -C
uma reorganização das coisas de acordo com essas larguras.Outro método seria usar o
-w
switch, por exemplo :tr
torna os separadores de campos consistentes: uma única guia entre cada coluna.cut
produz a coluna desejada.fonte
altere o número de caracteres (54) conforme necessário para obter apenas os dados desejados.
fonte
54-
tell cut para todos os caracteres começando na posição 54; ele não para na coluna "reconhecida pelo homem"