bash의 *는 영숫자 순서로 파일과 일치합니까?


25

파일 이름 순서로 여러 파일을 연결하고 싶습니다.

이것이 알파벳 순서로 나에게 있다고 가정하는 것이 안전합니까?

cat * 

즉, 같은 순서입니다 ls.

답변:


26

짧은 대답 : 그렇습니다.

로부터 bash는 남자 페이지 :

단어 분할 후 -f 옵션을 설정하지 않으면 (내장 설정 참조) Bash는 각 단어에서 '*', '?'및 '['문자를 검색합니다. 이러한 문자 중 하나가 나타나면 단어는 패턴으로 간주되며 패턴과 일치하는 알파벳순으로 정렬 된 파일 이름 목록으로 대체됩니다.


6
"알파벳"은 로캘 ​​설정 (특히 $LC_COLLATE) 에 따라 다릅니다 .
grawity

4
@grawity true, 그러나 ls동일한 시스템에서와 동일한 결과를 얻을 수 있습니다.
BloodPhilia

8

짧은 대답은 그렇습니다. 그러나 영숫자 순서는 생각한 자연 순서와 일치하지 않을 수 있다고 생각해야합니다.

예를 들어, 시스템에서 숫자와 숫자를 찾기 위해 대문자와 소문자를 처리하는 방법에 대한 테스트를 실행하십시오.

glob이 리턴 한 파일 목록을 정렬 할 때 자주 겪는 문제점은 번호가 매겨진 파일입니다. 종종 다음과 같은 번호의 파일이 제공됩니다.

blah_1.txt
blah_2.txt
...
blah_10.txt
blah_11.txt

그러나를 사용하는 glob *는이 순서대로 반환하지 않으며 대신 다음과 같은 것을 얻습니다.

blah_1.txt
blah_10.txt
blah_11.txt
...
blah_2.txt
blah_20.txt
...

그래서 - 당신이 한 자리 때문에 파일 또는 이름 바꾸기 파일의 반환 목록에 몇 가지 조작을 수행하는 중 필요 (즉, 앞에 0이해야이 문제를 피하기 위해 blah_01.txt, blah_02.txt등).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.