디렉터리에 다음 파일이 포함되어 있다고 가정합니다.
- 파일 1
- 파일 2
- b 파일
- .c 파일
- 문서
- 파일 2
- q 파일
- 이 문서
$LETTER로 시작하거나 $LETTER 이후의 알파벳 문자로 시작하는 모든 파일을 선택하는 간단한 방법을 찾고 있습니다. $LETTER로 시작하는 파일이나 문자로 시작하는 파일을 찾기 위해 쉽게 수정할 수 있는 솔루션더 일찍알파벳의 $LETTER보다 더 유용합니다.
예를 들어 위 목록 LETTER=c에서 "cfile, ffile, ffile2, qfile, zfile"을 선택하고 싶습니다.
위의 예는 단순화된 예입니다. 실제로 이 디렉터리에는 수천 개의 파일이 포함됩니다. 결국 ls | tail -n${FUDGE_FACTOR}
퍼지 요인을 수동으로 찾아내는 방법을 사용했는데, 이를 자동화할 수 있는 방법을 찾고 있습니다.
저는 셸 기반 솔루션을 찾고 있습니다(저는 BASH를 사용하지만 다른 셸의 솔루션도 환영합니다). 나는 쉘 스크립트가 이 작업에 가장 적합한 도구가 아닐 수도 있다는 것을 알고 있지만 순전히 관심에서 (쉘 스크립트에 대해 더 자세히 알아보기 위해) 이 질문을 하는 것이므로 python/perl/lua의 FAVE_SCRIPTING_LANGUAGE 답변에 회신하지 마십시오. /$
이러한 유형의 작업에 대한 쉘 스크립트의 제한 사항에 대한 일반적인 의견과 실제 생활에서 이러한 제한 사항을 해결하는 가장 좋은 방법(즉, "쉘 기반 솔루션이어야 합니다"라는 규정 없이)이 가장 환영받을 것입니다.
감사해요
답변1
답변2
쉘에 내장된 와일드카드를 사용하는 것은 어떻습니까?
LETTER=c; echo [$LETTER-z]*
이것은 bash와 ksh에서 작동합니다.
답변3
다음과 같은 스크립트를 사용할 수 있습니다.
START=c
END=q
ls | egrep ^[$START-$END].*
그러면 c부터 q까지 시작하는 모든 파일이 선택됩니다.
예제 출력:
[gbeech@svr01 test]$ echo ^[$START-$END].*
^[c-q].*
[gbeech@svr01 test]$ ls | egrep ^[$START-$END].*
cfile
ffile
ffile2
qfile
또한 정규식을 조정하여 grep이 거의 모든 작업을 수행하도록 제한하도록 확장할 수도 있습니다.