를 사용하면 ls -lah
각 파일에 대해 많은 정보를 얻습니다.
이름과 파일 크기만 어떻게 알 수 있나요?
또한 화살표가 있는 심볼릭 링크 목록을 유지하고 싶습니다.
lrwxrwxrwx 1 rubo77 rubo77 4 Nov 21 01:53 test2 -> test
답변1
awk를 사용하여 인쇄할 열을 선택하세요.
한 가지 방법은 출력을 구문 분석하는 것입니다 ls
.
예
$ ls -lah | awk '{print $9, $5}' | tail -5
.yEd 4.0K
.youtube-dl 4.0K
.zenmap 4.0K
.zshrc 32
zzzz 3.3K
그런데, 출력 삭제를 사용할 수 있습니다 column
.
$ ls -lah | awk '{print $9, $5}' | column -t | tail -5
z 4
.youtube-dl 4.0K
.zenmap 4.0K
.zshrc 32
zzzz 3.3K
awk를 사용하여 삭제할 열을 선택하세요.
다른 열을 유지하면서 다른 열을 제거하려면 이 awk
방법을 사용하여 원하지 않는 열을 지울 수 있습니다.
예
$ ls -lah | awk '{$1=$2=$3=$4=$6=$7=$8=""}1' | tail -5
4.0K .youtube-dl
4 z -> zzzz
4.0K .zenmap
32 .zshrc
3.3K zzzz
마지막 해결책
OP는 위의 예를 혼합하여 이 명령 체계를 만들었습니다.
$ ls -lah | awk '{print $5, $9$10$11}' | column -t | column
...
4.0K .gphoto 773 .rdebug_hist 4.0K .youtube-dl
1.5K .grip 4.0K .rdesktop 4 z->zzzz
답변2
매뉴얼 페이지에서:
-s, --size print the allocated size of each file, in blocks
따라서 사람이 읽을 수 있는 크기의 경우:
ls -sh
답변3
빠르고 더러운 방법은 ls -lah
출력을 몇 가지 다른 명령과 결합하는 것입니다.
ls -lah | tr -s ' ' | cut -d' ' -f5,9-
이 tr -s
명령은 여러 공백을 단일 공백으로 바꾸고 cut -d' ' -f5,9-
열 5와 9(및 그 이상)를 인쇄합니다. 9-
기호 링크에 의해 생성된 추가 공백으로 구분된 열을 고려해야 합니다 .
답변4
얻을 수 있는 가장 가까운 방법 ls
은 억제된 사용자 및 그룹 열을 사용하는 것입니다 ls -log
. 한 단계 더 나아가려면 출력을 구문 분석할 수 있습니다. 두 번째 열(링크 수)에는 가변 너비가 있습니다. 다음 셸 코드 조각은 열 정렬을 유지하고 임의의 파일 이름(문자 그대로 전달된 경우 줄 바꿈 제외)을 처리하며 출력을 컬러로 표시합니다(GNU coreutils를 실행하지 않는 경우 이 부분을 제거).
if [ -t 1 ]; then color=yes; else color=no; fi
ls -h -log --color="$color" | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/'