리눅스를 이용한 글로벌 포지셔닝

리눅스를 이용한 글로벌 포지셔닝

이름에 두 개의 숫자가 포함된 파일만 나열하는 방법은 무엇입니까?

이렇게 했는데 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.

관련 정보