Ваша команда p
rint должна идти в конце, и вы также хотите запретить печать по умолчанию:
ls -l | sed -n '/^.rwx/p'
Если вы работаете в системе с stat
, есть еще один способ решить проблему:
for f in *
do
stat -c "%a" "$f" | grep -q ^7 && printf "%s\n" "$f"
done
Опасно полагаться на вывод ls
; представьте, что кто-то создал такой файл:
touch $'foo\n-rwx some file'
... который создаст отдельную строку в выводе ls
, которая (ложно) соответствует регулярному выражению. Использование оболочки оболочки (*
) позволяет избежать этой проблемы.
Еще один способ — использовать find
:
find . ! -name . -prune -perm -700 -ls