2012-10-29 60 views
0

在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. 
+0

你對文件夾有執行權限嗎? – Dunes

+0

不一定,所以根據下面的答案,可能無法輸出〜/ foo/folder/file1.txt無法讀取。謝謝。 – Daniel

回答

1

如果您無法讀取文件夾~/foo/folder,有沒有辦法讓你發現任何文件在裏面,無論是可讀與否。

如果你可以閱讀~/foo,你可以在所有的文件和目錄,並測試,它們是否是可讀與否:

find ~/foo | while read file; do 
    if test \! -r "$file"; then 
     echo "$file cannot be read" 
    fi 
done 
1

目錄權限有趣。如果您對目錄沒有讀取權限,則無法通過系統調用(如readdir()(這是如何使用命令(如find,ls,甚至是shell生成文件名列表))來找出它包含哪些文件。

如果您擁有目錄的讀取權限,您可以在目錄中找到文件的基本列表,但您需要'執行'權限才能訪問這些文件,甚至找到文件權限。

如果您擁有沒有讀取權限的執行權限,但您知道目錄中文件的名稱,則可以列出文件並進行訪問(如果文件權限允許您這樣做)。

因此,如果目錄不可讀,但您擁有該目錄的執行權限,則可以調查您在目錄中知道的任何文件。儘管如此,你不能找出哪些文件存在。

+0

謝謝喬納森。 – Daniel

相關問題