ls 명령 출력의 1개 열만 에코하려면 어떻게 해야 합니까?

ls 명령 출력의 1개 열만 에코하려면 어떻게 해야 합니까?

ls 명령을 실행할 때 출력은 다음과 같습니다.

file1 file2 file3 file4

출력의 특정 열(이 경우 file2)만 표시할 수 있습니까? 나는 성공하지 않고 다음을 시도했습니다.

echo ls | $2

기본적으로 내가 원하는 것은 두 번째 열만 에코하는 것입니다. 이 경우에는 에코하고 싶습니다.

file2

답변1

다음 명령은 출력 형식을 ls하나의 열로 지정합니다.

ls -1 /directory

답변2

가장 안정적인 방법은 파일을 배열에 넣은 다음 구문 분석을 방지하는 두 번째 파일을 가져오는 것입니다.

files=(*)
printf '%s\n' "${files[1]}"

파일이 검색되는 순서는 값에 따라 다릅니다 LC_COLLATE. 따라서 LC_COLLATE=C모든 특수한 경우에 "표준" 정렬을 원하는 경우 이를 먼저 설정하는 것이 좋습니다.

답변3

출력이 터미널이 아닌 경우 단일 열 모드를 사용하려면 -Cas를 추가해야 합니다. 그런 다음 두 번째 열을 인쇄합니다.lsawk

ls -C | awk '{print $2}'

답변4

이미 언급했듯이 열을 사용하여 ls출력을 구문 분석하는 ls것은 파일 이름 길이와 터미널 너비에 따라 줄이 끊어지기 때문에 그다지 강력하지 않습니다. 요소 목록의 단일 열을 표시하는 것은 종종 재미있습니다. Cut 명령을 사용하여 이 작업을 수행할 수 있습니다.

echo file1 file2 file3 file4 | cut -d" "  -f2

표시됩니다

file2

-d열 구분 기호를 선택할 수 있습니다 .

cut -d, -f2

쉼표로 구분된 목록의 두 번째 열을 표시할 수 있습니다.

관련 정보