Я пытаюсь распечатать напишите эту команду в UNIX:
ls -l | sed 'p/^.rwx'
Но я получаю следующую ошибку:
sed: -e expression #1, char 2: extra characters after command
Я пытаюсь распечатать файлы / каталоги, в которых у пользователя есть все разрешения (rwx)
Ваша команда 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
Вы хотите запустить это:
ls -l | sed -n '/^.rwx/p'
n -> Печатает только совпадающие данные
^.rwx -> Начиная с любого символа, но за которым следует rwx.
p -> Распечатать данные