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
답변3
이것을 실행하고 싶습니다:
ls -l | sed -n '/^.rwx/p'
n -> 일치하는 데이터만 인쇄
^.rwx -> 임의의 문자로 시작하고 그 뒤에 rwx가 옵니다.
p -> 데이터 인쇄