이름에 두 개의 숫자가 포함된 파일만 나열하는 방법은 무엇입니까?
이렇게 했는데 ls *[0-9]*[0-9]*
이름에 4자리가 포함된 다른 파일이 표시되어 잘못된 것 같습니다.
두 글자로 이름이 지정된 txt 파일만 나열하는 방법은 무엇입니까?
이렇게 했는데 ls ??.txt
이름이 문자로 된 파일만 나열하는 방법을 모르겠습니다.
나는 배쉬를 사용하고 있습니다.
답변1
에서 *[0-9]*[0-9]*
별표는 무엇이든, 더 많은 문자와 일치할 수 있습니다. 이와 같은 것에는 1234.txt
두 개의 숫자가 있습니다. 비록 그것이 영어로 표현하는 일반적인 방법은 아니지만 말입니다.
별표를 대체하려면 "숫자가 아닌 문자의 수"와 일치하는 것이 필요합니다. 이는 일반 glob으로는 수행하기 어렵습니다. 그러나 ksh 스타일 확장 글로브를 사용하면 이 작업을 수행할 수 있습니다. 예를 들어 Bash에서는 다음과 같습니다.
#!/bin/bash
shopt -s extglob
ls *([^0-9])[0-9]*([^0-9])[0-9]*([^0-9])
(대안은 일치하는 파일 이름 목록을 반복하여 *[0-9]*[0-9]*
일치하는 파일 이름을 필터링하는 것 입니다 *[0-9]*[0-9]*[0-9]*
. 어느 쪽이든 보기에 좋지 않습니다.)
두 글자만(만) .txt
뒤에 [[:alpha:]][[:alpha:]].txt
.