몇 가지 파일이 있다고 가정해 보겠습니다.
touch {1..10}-{1..10}.dat
두 번째 번호와 연결됩니다. for 루프에 대한 해결책은 다음과 같습니다.
for i in {1..10}; do
cat *-${i}.dat > ${i}.out
done
리디렉션에서 glob의 내용을 일치시키는 것이 가능합니까? 그것은 마치
cat *-*.dat > *.out
분명히 명확하지는 않지만 다음과 같은 생각이 듭니다.
cat *-{1..10}.dat > {1..10}.out
작동해야합니다. 여기에 간단한 비-for 루프 솔루션이 있습니까?
답변1
당신은 다음과 같은 미친 짓을 할 수 있습니다
$ eval "bash -c 'n=\$1; echo \$n' cmd "{1..2}\;
1
2
다음 명령을 사용하면 이해하기가 더 쉽습니다 echo
.
$ echo "bash -c 'n=\$1; echo \$n' cmd "{1..2}\;
bash -c 'n=$1; echo $n' cmd 1; bash -c 'n=$1; echo $n' cmd 2;
귀하의 경우:
eval "bash -c 'n=\$1; cat *-\$n.dat > \$n.out' cmd "{1..10}\;