2016-12-15 5 views
0

Я практикую команду unix find на основе разрешений. Это какая ls -al на моей практике Dir выглядит следующим образом:Результаты трубопровода Linux находят, что ls показывает противоречивый результат

[[email protected] ~]$ ls -al 
total 44 
drwx------. 8 tom tom 4096 Dec 13 09:08 . 
drwxr-xr-x. 7 root root 63 Nov 5 16:38 .. 
-rw-------. 1 tom tom 9547 Dec 15 08:16 .bash_history 
-rw-r--r--. 1 tom tom 18 Oct 26 00:36 .bash_logout 
-rw-r--r--. 1 tom tom 193 Oct 26 00:36 .bash_profile 
-rw-r--r--. 1 tom tom 231 Oct 26 00:36 .bashrc 
drwxrwxr-x. 2 tom tom 21 Dec 12 22:14 chattrdir 
-rw-rw-r--. 1 tom tom  0 Dec 13 09:03 file1 
-rw-rw-r--. 1 tom tom  0 Dec 13 09:03 file2 
drwxr-xr-x. 2 tom tom 4096 Dec 11 14:36 fileext 
-rw-------. 1 tom tom 164 Dec 14 09:25 .lesshst 
drwxr-xr-x. 4 tom tom 37 Dec 20 2015 .mozilla 
drwxrw----. 3 tom tom 18 Dec 8 20:20 .pki 
drwx------. 2 tom tom 24 Nov 7 09:51 .ssh 
-rw-------. 1 tom tom 3639 Dec 8 20:56 .viminfo 
drwxrwxr-x. 2 tom tom 4096 Dec 8 21:26 wildcard 

Я делаю команду поиска, чтобы поиск на основе разрешений:

[[email protected] ~]$ find . -maxdepth 1 -perm /004 
./.bash_logout 
./.bash_profile 
./.bashrc 
./.mozilla 
./chattrdir 
./file1 
./file2 
./fileext 
./wildcard 

Далее, чтобы увидеть, если это действительно только файлы, которые имеют разрешение на чтение бит установлен для «других», я труба вывода в ls:

[[email protected] ~]$ find . -maxdepth 1 -perm /o+r | ls -al 
total 44 
drwx------. 8 tom tom 4096 Dec 13 09:08 . 
drwxr-xr-x. 7 root root 63 Nov 5 16:38 .. 
-rw-------. 1 tom tom 9584 Dec 15 08:23 .bash_history 
-rw-r--r--. 1 tom tom 18 Oct 26 00:36 .bash_logout 
-rw-r--r--. 1 tom tom 193 Oct 26 00:36 .bash_profile 
-rw-r--r--. 1 tom tom 231 Oct 26 00:36 .bashrc 
drwxrwxr-x. 2 tom tom 21 Dec 12 22:14 chattrdir 
-rw-rw-r--. 1 tom tom  0 Dec 13 09:03 file1 
-rw-rw-r--. 1 tom tom  0 Dec 13 09:03 file2 
drwxr-xr-x. 2 tom tom 4096 Dec 11 14:36 fileext 
-rw-------. 1 tom tom 164 Dec 14 09:25 .lesshst 
drwxr-xr-x. 4 tom tom 37 Dec 20 2015 .mozilla 
drwxrw----. 3 tom tom 18 Dec 8 20:20 .pki 
drwx------. 2 tom tom 24 Nov 7 09:51 .ssh 
-rw-------. 1 tom tom 3639 Dec 8 20:56 .viminfo 
drwxrwxr-x. 2 tom tom 4096 Dec 8 21:26 wildcard 

Вы видите, что следующие файлы сделать не имеют разрешения на чтение набор для других, даже если я хочу только файлы, которые действительно имеют разрешения установлена ​​битое чтение для других:

-rw-------. 1 tom tom 9584 Dec 15 08:23 .bash_history 
rw-------. 1 tom tom 164 Dec 14 09:25 .lesshst 
drwxrw----. 3 tom tom 18 Dec 8 20:20 .pki 
drwx------. 2 tom tom 24 Nov 7 09:51 .ssh 
-rw-------. 1 tom tom 3639 Dec 8 20:56 .viminfo 

Как можно эти файлы приходят в выводе? Я обрабатываю только файлы, которые можно прочитать в соответствии с моим поиском поиска, в команду ls и ls показывает, что они не читаются.

ответ

1

ls не читает имена файлов из stdin. Он ожидает их в командной строке. Вы хотите:

find . -maxdepth 1 -perm /o+r -exec ls {} \; 

Проверка man find для {} \; синтаксиса ехес команды.

Btw, если ваш find поддерживает, что, возможно, вероятно, хотите:

find . -maxdepth 1 -perm /o+r -exec ls {} + 
+0

Спасибо! Приятно дать дополнительную информацию о опции -exec, чтобы получить то, что я хочу. – Tom

+0

Добро пожаловать – hek2mgl

 Смежные вопросы

  • Нет связанных вопросов^_^