이것이 표준 출력이다ls -ln | nl
wolf@linux:~$ ls -lh | nl
1 total 24
2 -rw-rw-r-- 1 wolf wolf 186 Sep 24 22:18 01.py
3 -rw-rw-r-- 1 wolf wolf 585 Sep 24 22:21 02.py
4 -rw-rw-r-- 1 wolf wolf 933 Sep 24 22:26 03.py
wolf@linux:~$
total 24
시작 번호 대신 두 번째 줄의 실제 파일/디렉토리로 시작할 수 있습니까?
원하는 출력
wolf@linux:~$ ls -lh | nl
total 24
1 -rw-rw-r-- 1 wolf wolf 186 Sep 24 22:18 01.py
2 -rw-rw-r-- 1 wolf wolf 585 Sep 24 22:21 02.py
3 -rw-rw-r-- 1 wolf wolf 933 Sep 24 22:26 03.py
wolf@linux:~$
답변1
나머지와 함께 첫 번째 줄을 사용하고 나머지는 다음 줄에 전달합니다.nl
$ ls -lh | { sed -u q; nl; }
total 24
1 -rw-rw-r-- 1 wolf wolf 186 Sep 24 22:18 01.py
2 -rw-rw-r-- 1 wolf wolf 585 Sep 24 22:21 02.py
3 -rw-rw-r-- 1 wolf wolf 933 Sep 24 22:26 03.py
sed
(버퍼링을 비활성화하는 데 사용됨 -u
) 라인과 q
uit를 소비하여 종료하기 전에 암시적으로 라인을 인쇄합니다. nl
남은 라인을 소모합니다.
첫 번째 줄을 들여쓰려면 다음과 같이 하면 됩니다.
$ ls -lh | { sed -u 's/^/ /;q'; nl; }
total 24
1 -rw-rw-r-- 1 wolf wolf 186 Sep 24 22:18 01.py
2 -rw-rw-r-- 1 wolf wolf 585 Sep 24 22:21 02.py
3 -rw-rw-r-- 1 wolf wolf 933 Sep 24 22:26 03.py
줄 번호 매기기를 더 아래로 시작하려면 종료 sed
시점을 알려주세요.q
$ ls -alh | { sed -u 's/^/ /;3q'; nl; }
total 24
drwx------ 1 wolf wolf 186 Sep 24 22:18 .
drwx------ 1 wolf wolf 186 Sep 24 22:18 ..
1 -rw-rw-r-- 1 wolf wolf 186 Sep 24 22:18 01.py
2 -rw-rw-r-- 1 wolf wolf 585 Sep 24 22:21 02.py
3 -rw-rw-r-- 1 wolf wolf 933 Sep 24 22:26 03.py
/\.\.$/q
대신 비슷한 것을 사용할 수도 있습니다 3q
.
답변2
이는 nl
0부터 시작됩니다.
$ ls -lh | nl -v 0
0 total 24
1 -rw-rw-r-- 1 wolf wolf 186 Sep 24 22:18 01.py
2 -rw-rw-r-- 1 wolf wolf 585 Sep 24 22:21 02.py
3 -rw-rw-r-- 1 wolf wolf 933 Sep 24 22:26 03.py
답변3
약간 추악하지만 적어도 GNU Coreutils 구현을 사용하면 nl
정규식을 통해 번호를 매길 줄을 지정할 수 있습니다. 긴 목록 출력에서 가능한 파일 형식 중 하나가 t
아니기 때문입니다.ls
1넌 할 수있어
ls -lh | nl -bp'^[^t]'
불행하게도 이는 출력 정렬을 유지하지 않습니다.
아마도 가장 공식적으로 올바른 방법은 ls
출력을 별도의 헤더와 본문 부분으로 분할하는 것입니다.
$ ls -lh | sed -e '1s/.*/\\:\\:\\:\n&\n\\:\\:/' | nl
total 0
1 -rw-rw-rw- 1 steeldriver steeldriver 0 Sep 9 19:53 bar
2 -rw-r--r-- 1 steeldriver steeldriver 449 Sep 16 17:41 bash_envs
3 -rw-rw-rw- 1 steeldriver steeldriver 131 Sep 5 18:13 dirlist
4 -rw-r--r-- 1 steeldriver steeldriver 359 Sep 13 19:42 error_status
(기본적으로 제목 번호 매기기 스타일은 다음과 같습니다.전혀).
답변4
awk
대신 다음을 시도해 볼 수 있습니다 .
ls -lh | awk '{printf("%5s ",NR==1?" ":NR-1); print}'
그러면 번호가 매겨지지 않은 "전체" 행이 인쇄되고 필드 너비가 5인 숫자가 있는 나머지 모든 행이 오른쪽으로 조정되어 인쇄됩니다. 숫자와 줄 내용 사이의 공백은 두 개의 공백입니다( 형식 5s
문자열의 다음 텍스트) printf()
.\t
"합계" 행이 필요하지 않은 경우 다음을 사용할 수 있습니다.
ls -lh | awk 'NR>1{print (NR-1) "\t" $0}'
또는
ls -lh | awk 'NR>1 {printf("%5s ",NR-1); print}'
대신에.