O seguinte comando irá formatar a saída ls em uma coluna
ls -1 /directory
Digamos que quando eu comando ls a saída é:
file1 file2 file3 file4
É possível exibir apenas uma determinada coluna de saída, neste caso, arquivo2? Eu tentei o seguinte sem sucesso:
echo ls | $2
Basicamente tudo que eu quero fazer é ecoar apenas a segunda coluna, neste caso, quero fazer eco:
file2
O seguinte comando irá formatar a saída ls em uma coluna
ls -1 /directory
Você está procurando por isso:
ls -C | awk '{ print $2 }'
No entanto, assumindo que você vai tentar usar este nome de arquivo mais tarde, não faça isso, pois ele irá quebrar em nomes de arquivos contendo espaços em branco. Em vez disso, coloque os arquivos em uma matriz e obtenha a segunda, o que evita a necessidade de fazer qualquer análise:
files=(*)
printf '%s\n' "${files[1]}"
A ordem em que você recupera os arquivos depende do valor de LC_COLLATE
. Dessa forma, talvez você queira definir LC_COLLATE=C
primeiro, se quiser uma classificação "padrão" em todos os casos de canto.
Você precisaria adicionar -C
como ls
usa o modo de coluna única quando a saída não é um terminal. awk
imprime a segunda coluna:
ls -C | awk '{print $2}'
num_chars=54 # offset
ls -ltr | cut -c$num_chars-
altere o número de caracteres (54), conforme necessário, para obter apenas os dados desejados.