在bash中,如何輸出目錄中不可讀的內容?如何在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.
在bash中,如何輸出目錄中不可讀的內容?如何在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.
如果您無法讀取文件夾~/foo/folder
,有沒有辦法讓你發現任何文件在裏面,無論是可讀與否。
如果你可以閱讀~/foo
,你可以在所有的文件和目錄,並測試,它們是否是可讀與否:
find ~/foo | while read file; do
if test \! -r "$file"; then
echo "$file cannot be read"
fi
done
目錄權限有趣。如果您對目錄沒有讀取權限,則無法通過系統調用(如readdir()
(這是如何使用命令(如find
,ls
,甚至是shell生成文件名列表))來找出它包含哪些文件。
如果您擁有目錄的讀取權限,您可以在目錄中找到文件的基本列表,但您需要'執行'權限才能訪問這些文件,甚至找到文件權限。
如果您擁有沒有讀取權限的執行權限,但您知道目錄中文件的名稱,則可以列出文件並進行訪問(如果文件權限允許您這樣做)。
因此,如果目錄不可讀,但您擁有該目錄的執行權限,則可以調查您在目錄中知道的任何文件。儘管如此,你不能找出哪些文件存在。
謝謝喬納森。 – Daniel
你對文件夾有執行權限嗎? – Dunes
不一定,所以根據下面的答案,可能無法輸出〜/ foo/folder/file1.txt無法讀取。謝謝。 – Daniel