ls를 사용하여 고정된 이름 길이의 파일을 검색하는 방법은 무엇입니까?

ls를 사용하여 고정된 이름 길이의 파일을 검색하는 방법은 무엇입니까?

디렉토리에는 다음과 같은 파일이 있습니다.

lazer_100506
lazer_100707
lazer_091211
lazer_110103
lazer_100406_temp
lazer_100622#delete

처음 4개 파일만 포함된 목록을 얻으려면 어떻게 해야 합니까?

$ ls lazer_......
ls: lazer_......: No such file or directory
$ 

답변1

여러 가지 방법이 있습니다:

ls오직

ls lazer_??????

ls그리고egrep

ls | egrep '^lazer_.{6}$'

find

find . -regextype posix-egrep -regex '^./lazer_.{6}$'

답변2

zsh다음과 같이 glob을 사용할 수 있습니다 .?(#cN)(여기서 플래그는 c이전 플래그가 ?시간과 정확히 일치해야 함 N):

setopt extendedglob
print -rl -- ?(#c12)

너가 선호한다면 ls:

ls -d -- ?(#c12)

고정된 이름 길이를 가진 일반 파일을 재귀적으로 검색하는 등 한정자를 추가할 수도 있습니다.

print -rl -- **/?(#c12)(.)

답변3

그리고 ksh93:

printf '%s\n' {12}(?)

12자 이름을 가진 (숨겨지지 않은) 파일의 경우.

또는 정규식을 선호하는 경우:

printf '%s\n' ~(E)^.{12}$

답변4

또 다른 해결책은 명령을 사용하는 것입니다 echo.

echo lazer_??????

정규식 처리는 shell명령을 실행하는 모든 항목에 의해 수행됩니다.echo

관련 정보