for 루프 없이 여러 파일을 여러 파일로 연결

for 루프 없이 여러 파일을 여러 파일로 연결

몇 가지 파일이 있다고 가정해 보겠습니다.

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}\;

관련 정보