Bash 스크립트에서 ls -l의 파이프라인 결과

Bash 스크립트에서 ls -l의 파이프라인 결과

그래서 나는 다음을 사용했습니다.

getent passwd $2 | awk -F: '{print "|Username: " $1 "\n|Password: " $2 "\n|Uid: " $3 "\n|Gid: " $4 "\n|Comment: " $5 "\n|Home: " $6 "\n|Shell: " $7 "\n"}'

사용자 정보를 깔끔한 목록에 입력하세요.

폴더에서도 같은 작업을 수행하고 싶습니다. 나는 "ls -l" 명령의 모든 정보를 원하지만, 그것이 테스트 블록처럼 나타나는 대신 하나씩 나열되기를 원합니다.

awk와 함께 명령을 사용할 수 있나요 ls? 이전에 사용했던 방법을 그대로 사용할 수 있나요?

답변1

Linux를 사용하고 있으므로 stat올바른 형식( -c, --format)으로 명령을 살펴보아야 합니다. 잘 알려지지 않은 기능인 이 형식은 C 스타일 길이 지정자를 허용하므로 예를 들어 시도해 보세요.

stat -c 'File: %-40n Size: %6s Flags: %8A' * 

임의의 문자열을 형식에 넣을 수 있으며, 심지어 개행 문자도 넣을 수 있습니다(구문 사용 $'string').

stat -c $'--------------\nFile:     %n\nSize:     %s\nFlags:    %A' /boot/*
--------------
File:     /boot/abi-4.13.0-45-generic
Size:     1501528
Flags:    -rw-r--r--
--------------
File:     /boot/config-4.13.0-45-generic
Size:     213220
Flags:    -rw-r--r--
--------------
File:     /boot/config-4.15.0-72-generic
Size:     217468
Flags:    -rw-r--r--
--------------
File:     /boot/config-4.15.0-74-generic
Size:     217503
Flags:    -rw-r--r--
--------------
File:     /boot/config-4.15.0-76-generic
Size:     217503
Flags:    -rw-r--r--

관련 정보