현재 사용자가 읽기 및 쓰기 권한을 가지고 있는 특정 디렉터리의 파일 수를 계산하는 방법은 무엇입니까?
나는 다음과 같이 시작합니다:
echo "whats the directory you want to check ?"
read dir
어떤 명령을 사용해야 할지 모르시나요 find
?
답변1
root
파일 목록(액세스할 수 있지만 읽을 수 없는 디렉터리 아래의 파일)을 요청한 다음 권한을 확인해야 합니다 .
sudo find "$dir" -print0|perl -Mfiletest=access -l -0ne'++$n if-r&&-w}{print+$n'
읽을 수 없는 디렉터리에 있는 파일에 대해 신경 쓰지 않는다면(그러나 여전히 읽고 쓸 수는 있음) GNU를 사용하십시오 find
.
find "$dir" -writable -readable -printf . | wc -c
둘 다 확인하세요.사용할 권리권한(디렉토리를 포함한 모든 유형의 파일에 대한)은 단지 권한을 기반으로 하는 것이 아닙니다. 읽기+쓰기 모드(생성 필요 없음)에서 성공적으로 열린 파일 수를 제공해야 합니다. 예를 들어, rwxrwxrwx 권한이 있는 심볼릭 링크의 경우 읽기 및 쓰기 권한이 있는 파일을 가리키는 링크만 보고합니다.
답변2
따라서 이것이 도움이 될지는 모르겠지만 find를 사용하는 또 다른 방법은 모든 파일의 모든 정보를 인쇄하고 이를 사용자 권한으로 줄인 다음 계산하는 것입니다. 어쩌면 다음과 같은 것일 수도 있습니다.
$> cd dir
$> count="$(ls -l | cut -d ' ' -f1 | cut -c 2-4 | grep rw | wc -l | sed 's/ //g')"
답변3
이 find
유틸리티와 해당 -perm
옵션은 귀하의 친구입니다.
$ find <DIR> -type f -perm /u+r,u+w | wc -l
$1
쉘 스크립트에서는 특수 변수, $2
...를 사용하여 주어진 매개변수의 값을 얻을 수 있습니다 $n
. 지정되지 않은 경우 현재 디렉토리를 사용하려면 다음을 수행하십시오.
DIR=.
if [ "$1" ]
then
DIR="$1"
fi
find $DIR -type f -perm /u+r,u+w | wc -l