디렉토리를 나열 할 때 기호 출력 -rw-rw-r–이 아닌 644와 같은 숫자로 된 UNIX 권한을 볼 수 있습니까?
감사.
답변
거의 할 수 ..
ls -l | 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}'
답변
내가 stat
찾고있는 파일을 알고 있다고 가정하면 가장 간단하게 생각할 수 있습니다 . 그렇지 않으면 *
대부분을 찾을 수 있습니다.
/usr/bin$ stat -c '%a %n' *
755 [
755 a2p
755 a2ps
755 aclocal
...
그것은 끈적 끈적한, 수 이드 및 회사를 즉시 처리합니다.
$ stat -c '%a %n' /tmp /usr/bin/sudo
1777 /tmp
4755 /usr/bin/sudo
답변
GNU find를 사용할 수 있습니다.
find . -printf "%m:%f\n"
답변
다음 명령을 사용할 수 있습니다
stat -c "%a %n" *
또한 특정 결과를 얻기 위해 filename
또는 directoryname
대신에 사용할 수 *
있습니다.
Mac에서는 다음을 사용할 수 있습니다
stat -f '%A %N' *
답변
The
와, 좋은 awk! 그러나 suid, sgid 및 sticky는 어떻습니까?
s와 t를 사용하여 필터를 확장해야합니다. 그렇지 않으면 계산되지 않으며 잘못된 결과를 얻습니다. 이 특수 플래그의 8 진수를 계산하려면 프로시 저는 동일하지만 색인은 4 7 및 10입니다. 실행 비트 세트가있는 파일의 가능한 플래그는 실행 비트 세트가 ---s--s--t
없는 파일의 경우 amd입니다.---S--S--T
ls -l | awk '{
k = 0
s = 0
for( i = 0; i <= 8; i++ )
{
k += ( ( substr( $1, i+2, 1 ) ~ /[rwxst]/ ) * 2 ^( 8 - i ) )
}
j = 4
for( i = 4; i <= 10; i += 3 )
{
s += ( ( substr( $1, i, 1 ) ~ /[stST]/ ) * j )
j/=2
}
if ( k )
{
printf( "%0o%0o ", s, k )
}
print
}'
테스트의 경우 :
touch blah
chmod 7444 blah
결과 :
7444 -r-Sr-Sr-T 1 cheko cheko 0 2009-12-05 01:03 blah
과
touch blah
chmod 7555 blah
줄게:
7555 -r-sr-sr-t 1 cheko cheko 0 2009-12-05 01:03 blah
답변
이를 사용하여 Unix 숫자 권한 값 (8 진수 값) 및 파일 이름을 표시하십시오.
stat -c '%a %n' *
이를 사용하여 Unix 숫자 권한 값 (8 진수 값)과 폴더의 sgid 및 sticky bit, 소유자의 사용자 이름, 그룹 이름, 바이트 단위의 총 크기 및 파일 이름을 표시하십시오.
stat -c '%a %A %U %G %s %n' *
%y
사람이 읽을 수있는 형식으로 마지막 수정 시간이 필요한 경우 추가하십시오 . 더 많은 옵션은 stat를 참조하십시오 .
별명을 사용하는 더 나은 버전
별칭을 사용하면 필요한 것을보다 효율적으로 수행 할 수 있으며 색상도 포함됩니다. 다음은 그룹 디렉토리별로 구성된 결과를 먼저 표시하고 컬러로 표시하며 사람이 읽을 수있는 형식 (예 : 1K 234M 2G)으로 인쇄 크기를 편집 ~/.bashrc
하고 편집 하여 계정의 별칭을 추가하거나 전 세계적으로/etc/profile.d/custom.sh
입력 cls
하면 새로운 LS 명령 결과가 표시됩니다.
alias cls="ls -lha --color=always -F --group-directories-first |awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf(\"%0o%0o \",s,k);};print;}'"
폴더 트리
bashrc 또는 custom.sh를 편집하는 동안 다음 별명을 포함하여 입력 lstree
하면 현재 폴더 트리 구조가 표시 되는 그래픽 표현을 볼 수 있습니다
alias lstree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'"
다음과 같이 표시됩니다.
|-scripts
|--mod_cache_disk
|--mod_cache_d
|---logs
|-run_win
|-scripts.tar.gz
답변
ls를 사용하여 파일의 권한 정보를 얻지 마십시오. stat 명령을 사용합니다. 원하는 숫자 값을 제공합니다. “Unix Way”는 ls (또는 ‘echo *’)와 stat를 사용하여 원하는 형식으로 정보를 제공하고자하는 스크립트를 발명해야한다고 말합니다.