2013-04-05 3 views
3

내가 변수에 첫 번째 txt 파일을 저장하고 싶은 다음 파일와일드 카드 하나의 파일

$ ls 
bar.txt baz.txt qux.txt 

을 감안할 때. 나는이

$ var=*.txt 

을 시도했지만 그냥 내가 가능하면 와일드 카드를 사용하여이 작업을 수행하고자하는 모든 파일

$ echo $var 
bar.txt baz.txt qux.txt 

를 저장하고, extglob이 괜찮습니다. 여기에있는 파일에는 이름에 공백이 없지만 공백이있는 파일에서도 사용할 수 있습니다. - 배열에 요소를 넣어 여기

$ var=(*.txt) 
$ echo $var 
bar.txt 

키가 괄호를 사용하는 것입니다

kamituel’s answer을 사용한 후 나는이 너무

$ set *.txt 

$ echo $1 
bar.txt 

답변

8

를 사용하여이 작업 할 수 있습니다 것을 깨달았다. 따라서 echo $var은 배열 (bar.txt)의 첫 번째 요소를 인쇄합니다.

$ echo ${var[@]} 
bar.txt baz.txt qux.txt 
+1

'* .txt' 파일이 없으면'var = (* .txt)'앞에'shopt -s nullglob'가 필요할 수도 있습니다. – pynexj

0

당신은 (약간) 변수 설정 for 문을 남용 할 수 있습니다 : 당신은 전체 배열을 인쇄하여 볼 수 있습니다 더하기 측면에서

$ for var in *.txt; do break; done 
$ echo $var 
bar.txt 

var 만의 이름을 포함 첫 번째 파일은 패턴과 일치하는 모든 파일이 아닙니다. 마이너스 쪽에서는 kamituel이 제공하는 배열 솔루션보다 더 장황하고 모든 일치하는 파일을 저장하는 오버 헤드가 실제 생활에서는 문제가되지 않을 것입니다.

+0

사실 이것은 재미 있었지만 "다음 사람"에게는 너무나 나쁜 것이 었습니다. 그것을지지하기가 어렵습니다. :) –

0
$ touch "test file1.txt" 
$ touch "test file2.txt" 
$ var=`ls *.txt | head -1` 
$ echo $var 
test file1.txt` 

첫 번째 파일을 반환합니다.

마지막 하나를 찾으려면 "head -1"대신 "ls"또는 "tail -1"대신 "ls -r"을 수행하십시오.

+0

http://mywiki.wooledge.org/ParsingLs –