CLI에서 잘라내 기가 예상대로 작동하지 않습니다. 매회 전체 줄을 반환합니다.


5

저는 MacOS Mojave를 사용하고 있으며 주어진 경로에서 파일 소유자 목록을 얻으려고합니다. 나는 이렇게하려고 노력하고 있지만 작동하지 않습니다.

$ ls -l /usr | cut -f3
total 0
drwxr-xr-x  971 root  wheel  31072 23 sty 20:05 bin
drwxr-xr-x  304 root  wheel   9728 23 sty 20:05 lib
drwxr-xr-x  248 root  wheel   7936 23 sty 20:05 libexec
drwxr-xr-x   16 root  wheel    512  3 lis 10:50 local
drwxr-xr-x  239 root  wheel   7648 23 sty 20:05 sbin
drwxr-xr-x   46 root  wheel   1472  3 lis 10:41 share
drwxr-xr-x    5 root  wheel    160 21 wrz 06:06 standalone

구분 문자를 지정하는 것은 작동하지만 TAB 문자에는 해당하지 않습니다 (기본값이어야 함).

$ ls -l /usr | cut -f3 -d' '

971
304
248

239

오, 내 zsh 및 iTerm 2와 함께 ZSH를 사용하고 있습니다.


2
당신은 당신이 소유자의 목록으로 무엇을하려는 의도에 대한 몇 가지 세부 사항을 추가 할 수 있습니까? 이것에 따라 출력을 파싱하는 것보다 나은 해결책이 될 수 있습니다. ls.
nohillside

1
Tab은 실제로 기본값입니다. cut, 그러나의 출력 ls 탭으로 구분되지 않습니다. 계산 된 공백 문자 수를 사용하여 표 형식 출력을 생성합니다.
chepner

답변:


17

공백을 하나의 공백으로 넣을 수 있습니다. ls 출력이 다음 사용 cut.

ls -l /usr | tr -s ' ' | cut -d ' ' -f3

구문 분석은 피하십시오. ls 산출. 여기에 대체 솔루션이 있습니다.

stat -f'%Su' /usr/*

6
gidds

stat 내 문제에 대한 좋은 해결책 인 것 같아서 특정 열을 추출하는 데 번거롭지 않고 더 많은 정보를 검색 할 수 있습니다. 감사!
Najki

1
두 번째 링크는 mywiki.wooledge.org/ParsingLs
Chris

11

ls 탭을 사용하지 않습니다. cut 필드 사이의 구분 기호의 가변 개수로 작동하지 않습니다.

ls -l /usr | awk '{print $3}'

작동 할 것이다.

ls -l /usr | awk 'NR > 1 {print $3}'

첫 번째 줄을 건너 뛰려면 ( total 0 귀하의 예에서).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.