Перечислите файлы, которые я могу прочитать - PullRequest
0 голосов
/ 27 мая 2018

Я хотел бы перечислить любые файлы, которые могут быть прочитаны моим текущим пользователем в bash.Я не уверен, что будет лучшим способом проверить это.Я думаю, что-то вроде ls -l | grep <myusername>|<mygroupname> или find ., но это не касается других разрешений.

Кроме того, я работаю над NetBSD box.

1 Ответ

0 голосов
/ 30 мая 2018

Учитывая 2 файла ниже, где один может быть прочитан пользователем, а другой нет:

[fsilveir@fsilveir tmp]$ ls -l ./test_dir/can_read.txt ./test_dir/cant_read.txt
-rw-r--r--. 1 root root 861784 May 29 20:34 ./test_dir/can_read.txt
-rwx------. 1 root root      0 May 29 20:30 ./test_dir/cant_read.txt

Вы можете использовать find с опцией -perm.Используя +r, вы получите список файлов, которые вы можете прочитать, и используйте -r для поиска файлов, которые вы не можете прочитать, как показано ниже:

[fsilveir@fsilveir tmp]$ find . -name "*.txt" -perm -g+r 2>/dev/null
./test_dir/can_read.txt
[fsilveir@fsilveir tmp]$ 

Другой подход - использование findс опцией -readable, как показано ниже:

[fsilveir@fsilveir tmp]$ find . -name "*.txt" -readable
./test_dir/can_read.txt

[fsilveir@fsilveir tmp]$ find . -name "*.txt" ! -readable
./test_dir/cant_read.txt
...