양식 패턴과 일치하는 모든 파일을 반복하고 싶습니다.
for file in {prefix1, prefix2, ...}*{postfix1, postfix2, ...}; do
{prefix1, prefix2, ...}
프로그래밍 방식으로 이러한 이름이 포함된 목록으로 바꾸려면 어떻게 해야 합니까 ? 시도해 보았지만 변수 확장 전에 중괄호 확장 $prefix*$postfix
이 prefix={prefix1,prefix2,...}
이루어지기 때문에 작동하지 않습니다.
답변1
접두사/접미사 패턴에 공백이 없으면 확장된 와일드카드를 사용할 수 있습니다.
shopt -s extglob
prefix='@(prefix1|prefix2|prefix3)'
suffix='@(suffix1|suffix2|suffix3)'
echo $prefix*$suffix
for file in $prefix*$suffix; do
#...
done
IFS
변수가 적절하게 설정된 경우 공백을 처리할 수 있습니다.
답변2
한 가지 접근 방식은 다음과 같이 bash 배열과 결합된 두 개의 루프를 사용하는 것입니다.
foo=(one two three)
bar=(four five six)
for f in ${foo[@]}; do
for g in ${bar[@]}; do
echo $f$g
done
done