假设我们有一些文件,
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}\;