디렉토리에는 다음과 같은 파일이 있습니다.
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