/etc에서 s로 시작하는 세 글자 파일을 모두 나열하는 방법은 무엇입니까?
그럴 리가 없어
ls -d /etc/s*
또는
ls -d /etc/s%%
내가 찾고 있는 것은 세 개의 편지 파일이 모두 있기 때문입니다.
편집* ls -d /etc/s??
할 수 있나요? 다른 두 글자를 의미하고 그 뒤에 's'가 옵니다. 감사합니다
답변1
첫 번째는 s?? 패턴이 's'로 시작하는 세 문자에 대해 정확하지만 s??는 전역 표현식이고 쉘이 이를 일치하는 항목으로 확장한다는 것입니다. 내 경우에는 /etc에 /etc/ssh와 /etc/ssl이라는 두 개의 폴더가 있었습니다. 이는 제안된 명령을 의미합니다.
ls -d /etc/s??
쉘에 의해 다음으로 확장됩니다.
ls -d /etc/ssh /etc/ssl
그런 다음 -d가 ls에 지시하는 대로 디렉토리 이름 자체만 나열합니다. 불행하게도 -d를 생략하면 /etc 아래에 있는 3글자 디렉터리의 내용이 나열됩니다. 이는 또한 원하는 내용이 아닙니다.
find를 사용하고 싶을 수도 있지만 재귀적으로 검색하지 말고(-max 깊이 1) 파일(-type f) 및 패턴 's??'(-name is ??')와 일치하는 이름을 찾도록 지시합니다.
find /etc -maxdepth 1 -type f -name 's??'
또한 패턴을 작은따옴표로 묶었습니다. 이렇게 하면 쉘이 find가 보기 전에 일치하는 파일로 검색 패턴을 확장하는 것을 방지할 수 있습니다.