Ну, я нашел другое решение, которое использует ls
и awk
вместо find. И это, безусловно, необходимо и может быть оптимизировано. Здесь это идет:
ls -alR | awk '{ if ($3 != $4) print $0 }'
Как это устроено :
- Посмотрите, что
-alR
делает от man ls
- awk ищет шаблон.
$3
и $4
соответственно дают 3- й и 4- й столбцы в выводе ls, которые являются file owner
и group
, в которую входит владелец.
$0
дает полную строку в выводе ls.
- Условие
if ($3 != $4) print $0
интерпретируется как «Печатать полную строку со всеми столбцами, в которых значение в 3- м столбце не равно значению в 4- м столбце»
- Полная команда может быть интерпретирована как Печать только тех строк в выводе ls, где имя владельца файла и имя группы не совпадают.
Ограничение:
Иногда, это дает эту ошибку для некоторых файлов:
ls: cannot open directory './chatscripts': Permission denied
Насколько я понимаю, это проблема разрешения пользователя, от которого выполняется команда. Пользователь не является ни владельцем, ни частью группы для этого файла и поэтому не может получить к нему доступ.
То, что вы хотите, может быть определенно выполнено с помощью команды find
, но я думаю, что это тоже может быть решением, и проблема с разрешениями останется, если вы сделаете это с помощью команды find
.
Не стесняйтесь добавлять дополнительные детали.