awk를 통해 파이프된 ls 명령에서 디렉터리 권한을 제거하는 방법은 무엇입니까? [폐쇄]

awk를 통해 파이프된 ls 명령에서 디렉터리 권한을 제거하는 방법은 무엇입니까? [폐쇄]

내 ZSH 사용자 정의 구성에는 다음 기능이 있습니다.

cll() { ls -AlhG "$@" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}'; }

다음과 같이 출력됩니다.

➜  test cll
total 32
644 -rw-r--r--    1 work  admin     0B Oct  7 18:55 .hidden
644 -rw-r--r--    1 work  admin   480B Aug 22  2016 gulpfile.js
644 -rw-r--r--    1 work  admin   149B Jan  7  2017 index.php
755 drwxr-xr-x  247 work  admin   8.2K Aug 22  2016 node_modules
644 -rw-r--r--    1 work  admin   1.0K Aug 22  2016 test.less
644 -rw-r--r--    1 work  admin   664B Aug 22  2016 test.min.css
755 -rwxr-xr-x    1 work  admin     0B Oct  7 18:54 try

색상도 지원하므로 내 실행 파일 등의 색상이 좋습니다 :)

-rw-r--r--권한 분석 열(예: )을 제거하고 싶습니다 . 그래서 나는 다음과 같이 보이기를 원합니다.

644    1 work  admin     0B Oct  7 18:55 .hidden
644    1 work  admin   480B Aug 22  2016 gulpfile.js
644    1 work  admin   149B Jan  7  2017 index.php
755  247 work  admin   8.2K Aug 22  2016 node_modules
644    1 work  admin   1.0K Aug 22  2016 test.less
644    1 work  admin   664B Aug 22  2016 test.min.css
755    1 work  admin     0B Oct  7 18:54 try

나는 그것을 방해하려고 노력했지만 내가 한 모든 일은 그것을 파괴했습니다. 나는 파이프를 통하지 않고 완전히 다른 접근 방식을 택할 의향이 있습니다 awk.


마지막 해결책:

이 문제에 관심을 가져주신 @Skaperen에게 감사드립니다 cut. 이 함수를 이중 파이프로 연결했는데 훌륭하게 작동합니다! 이제 출력은 다음과 같습니다.

➜  test cll
total
 644  work  admin     0B Oct  7 18:55 .hidden
 644  work  admin   480B Aug 22  2016 gulpfile.js
 644  work  admin   149B Jan  7  2017 index.php
 755  work  admin   8.2K Aug 22  2016 node_modules
 644  work  admin   1.0K Aug 22  2016 test.less
 644  work  admin   664B Aug 22  2016 test.min.css
 755  work  admin     0B Oct  7 18:54 try

이것은 내 기능입니다 aliases.zsh(사용자 정의 구성).

cll() { ls -AlhG "$@" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}' | cut -c 1-5,21-; }

완벽하게 만들 수 있는 유일한 방법은 "디렉토리", "파일", "symlink" 등인지 확인하기 위해 사용자 정의 열을 추가할 수 있다는 것입니다.

답변1

명령을 통해 파이프하십시오 cut -c 1-3,14-. 조정이 필요한 경우 숫자를 조정하십시오. 자세한 내용을 확인하세요 man cut.

관련 정보