現在、ユーザーが読み取りおよび書き込み権限を持っている特定のディレクトリのファイル数を計算する方法は?
私は次のように始めます:
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を使用するもう1つの方法は、すべてのファイルのすべての情報を印刷し、それをユーザー権限に減らしてから計算することです。たぶん、次のようなものがあります。
$> 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