sed 사용 중 오류가 발생했습니다.

sed 사용 중 오류가 발생했습니다.

UNIX에서 다음 명령을 작성하려고 합니다.

ls -l | sed 'p/^.rwx'

하지만 다음과 같은 오류가 발생합니다.

sed: -e expression #1, char 2: extra characters after command

사용자에게 모든 권한이 있는 파일/디렉토리를 인쇄하려고 합니다(rwx).

답변1

rint 명령 은 p마지막에 나타나야 하며 기본적으로 인쇄를 비활성화하려고 합니다.

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... 정규식과 (잘못) 일치하는 출력에 단일 줄이 생성됩니다 . 이 문제는 shell glob()을 사용하여 *피할 수 있습니다 .

또 다른 방법은 다음을 사용하는 것입니다 find.

find . ! -name . -prune -perm -700 -ls

답변2

귀하의 특정질문, 사용을 고려해보세요

find . -perms 700 -maxdepth 1 -ls

또는

find . -perms /u+rwx -maxdepth 1 -ls

인용하다.

답변3

이것을 실행하고 싶습니다:

ls -l | sed -n '/^.rwx/p'

n -> 일치하는 데이터만 인쇄

^.rwx -> 임의의 문자로 시작하고 그 뒤에 rwx가 옵니다.

p -> 데이터 인쇄

관련 정보