정규식을 사용하여 bash에서 파일 이름을 자동으로 채우는 방법이 있습니까?

정규식을 사용하여 bash에서 파일 이름을 자동으로 채우는 방법이 있습니까?

다음과 같은 파일이 포함된 디렉터리가 있다고 가정해 보겠습니다.

$ ls
file0001.txt file0002.txt file0003.txt file0004.txt file0005.txt someotherfile.txt

다음 명령을 실행하고 싶다고 가정해 보겠습니다.

$ cat file0001.txt file0002.txt file0003.txt file0004.txt file0005.txt 

bash 단축키를 사용하여 다음과 같이 파일 이름을 자동 완성할 수 있습니다.cat file000 ESC *

이제 특정 정규식(regex)만을 기반으로 자동 완성과 유사한 방식으로 단축키를 사용할 수 있습니까? 예를 들면 cat file000[1-3] ESC *다음과 같습니다.

$ cat file0001.txt file0002.txt file0003.txt

편집: 더 이해하기 위해 위의 예에서 정규식을 사용해야 했습니다. file000[1-3].txt또는file000[1-3]*

명확하게 말하자면, 내 질문은 정규 표현식을 사용하여 bash를 자동 완성하는 방법입니다. 대신 catbash 스크립트를 사용하거나 정규식 for/ while문을 사용하여 일부 파일을 함께 묶는 방법 은 무엇입니까 ?

답변1

당신이 찾고 있는 기능이 바로 여기에 있습니다. *귀하의 예에는 누락 된 내용이 있습니다 . 입력 cat file000[1-3]*ESC*하면 작동합니다. 나는 이것이 어떤 파일과도 일치하지 않는 경우 insert-completions(에 바인딩된 ) readline 함수가 ESC*glob 패턴을 확장하지 않기 때문에 그런 경우라고 생각합니다. 마지막 항목이 없으면 *파일과 일치하지 않습니다.

당신은 할 수 있습니다매뉴얼 페이지, "확장" 섹션 "경로 이름 확장".

답변2

교정기만 있으면 됩니다

cat file000{1,2,3}.txt

이는 다음과 같이 번역됩니다.

cat file0001.txt file0002.txt file0003.txt

관련 정보