0

bashでは、ディレクトリの読み取り不可能なコンテンツをどのように出力しますか?

たとえば、ディレクトリがであり、ファイルを含む~/foo読み取り不可能なフォルダと、別の読み取り不可能なファイルがあるとします。出力したい:~/foo/folder~/foo/folder/file1.txt~/foo/file2.txt

~/foo/folder cannot be read.
~/foo/folder/file1.txt cannot be read.
~/foo/file2.txt cannot be read.
4

2 に答える 2

1

ディレクトリのアクセス許可は興味深いものです。ディレクトリに対する読み取り権限がない場合は、などのシステムコールでディレクトリに含まれるファイルを見つけることができませんreaddir()(これは、、、などのコマンドfindlsさらにはシェルでさえファイル名のリストを生成する方法です)。

ディレクトリの読み取り権限がある場合は、ディレクトリ内のファイルの基本的なリストを見つけることができますが、ファイルにアクセスするには、ファイルの権限を確認する場合でも、「実行」権限が必要です。

読み取り権限なしで実行権限を持っているが、ディレクトリ内のファイルの名前がわかっている場合は、ファイルの一覧表示とアクセスの両方を行うことができます(ファイル権限で許可されている場合)。

したがって、ディレクトリが読み取り可能ではないが、ディレクトリに対する実行権限がある場合は、ディレクトリ内の既知のファイルを調査できます。ただし、そこにあるファイルを見つけることはできません。

于 2012-10-29T23:42:44.917 に答える
1

フォルダを読み取れない場合は~/foo/folder、読み取り可能かどうかに関係なく、フォルダ内のファイルを検出する方法はありません。

読み取ることができる場合は~/foo、すべてのファイルとディレクトリを調べて、読み取り可能かどうかをテストできます。

find ~/foo | while read file; do
    if test \! -r "$file"; then
        echo "$file cannot be read"
    fi
done
于 2012-10-29T23:29:30.613 に答える