将多个文件连接到多个文件,无需 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}\;

相关内容