or
예를 들어 파일을 읽을 때 셸에서 선택 을 확장 할 수 있습니까?
이것이 의미하는 바는 예를 들어 파일에서 A 또는 B와 일치하는 grep
구문을 지원 한다는 것 (A|B)
입니다.
마찬가지로 이러한 파일이 있으면
file1.txt
file2.txt
file3.txt
file4.txt
file5.txt
범위를 확장함에 따라 cat file{1..5}.txt
에서 할 수 bash
있습니다. 몇 개의 파일에 대해서만 동등한 방법이 있습니까?
예를 들어 cat file(1|5).txt
2 만 인쇄합니까?
답변
숫자 와 일치 하는 표준 파일 이름 글 로빙 패턴 은 [0-9]
입니다. 한자리 숫자와 일치합니다.
cat file[0-9].txt
이 중 두 가지만 선택하려면
cat file[25].txt
9보다 큰 숫자의 경우 괄호 확장이 유용합니다 (그러나 글 로빙 패턴과 괄호 확장의 차이점에 대해서는 아래 참고 참조).
cat file{25..60}.txt
다시 말하지만 중괄호 확장은 개별 숫자도 허용합니다.
cat file{12,45,900,xyz}.txt
위의 예에서 중괄호 확장에는 산술 루프가 포함되지 않고 제공된 문자열을 기반으로 이름이 생성됩니다.
에서 bash
의와 extglob
쉘 옵션 (사용 shopt -s extglob
), 다음과 같은 것 또한 일 :
cat file@(12|45|490|foo).txt
@(...)
패턴이 포함 된 중 하나와 일치합니다 |
-delimited 패턴을.
글 로빙 같은 패턴의 차이 [...]
및 @(...)
및 중괄호 확장은 중괄호 확장된다는 점이다 명령 행에서 생성 실제로 현재 디렉토리의 기존 이름과 일치하지 않을 수 있습니다. 파일 이름 globbing 패턴은 이름과 일치하지만 가능한 모든 이름이 존재하지 않으면 쉘은 불평하지 않습니다. 경우 에는 일치하는 이름이 존재하지도 않는, 패턴, 확장되지 않은 일 남아 nullglob
쉘 옵션이 설정되어있는 경우에는 패턴이 제거됩니다.
예:
touch file1
ls file[0-9]
여기에는 파일 목록 만 file1
표시됩니다.
와 ls file{0..9}
, ls
찾는 것에 대해 불평하지 것 file0
, file2
등
다음 예제에서 첫 번째 명령은 주어진 패턴과 일치하는 기존 이름 만 터치 하고 두 번째 행은 아직 존재하지 않는 파일을 만듭니다.
touch file[0-9]
touch file{0..9}
답변
사용할 구문은 및로 file{1,2}
평가됩니다 .file1
file2
$ ls
$ touch file{1,2,3,4,5,6,7,8,9}
$ ls
file1 file2 file3 file4 file5 file6 file7 file8 file9
Inian이 아래에서 지적한 것처럼 … touch file{1..9}
이 예제에서는 더 쉬울 것입니다 …
$ ls
$ touch file{1..9}
$ ls
file1 file2 file3 file4 file5 file6 file7 file8 file9
다음과 같은 여러 표현식을 사용할 수도 있습니다.
$ ls
$ touch file{1..9}{a..z}
$ ls
file1a file1b file1c
[...]
file9x file9y file9z
예, 위의 234 (만듭니다 9
회 26
) 파일을.
답변
예, bash
쉘 에서 괄호 확장을 사용할 수 있습니다 . 단지 몇 개의 파일에 대해서만 file{1..2}
또는file{1,2}
또는 경우에 따라 파일이 없을지 걱정되는 경우 간단한 루프를 수행하십시오.
for file in file{1..4}.txt; do
[ -f "$file" ] || continue
echo "$file" # Do other actions on file here
done
또는 파일에 대한 유일한 연결이 파일에 대한 유일한 작업이고 어떤 파일이 어떤 시점에 존재하지 않았는지 확실하지 않은 경우 해당 파일 만 cat
오류를 억제하십시오. /dev/null
파일을 사용할 수없는 경우 오류를 억제하도록 표준 오류를 재 지정 하십시오.
cat file{1,5}.txt 2>/dev/null
또는 file[15]
파일을 찾을 수없는 경우 오류에 대해 불평하지 않는 glob 표현식 을 사용하십시오 .
cat file[15].txt