0

我正在尝试通过在 bash 命令行中使用 for 循环将一个文件中的两行文本添加到一堆其他文件的开头。

我在命令行中试过这个:

$for i in *.txt; do head -2 ../../041_R_def_c.txt > X; cat i >> X; \mv X i; done

但它给了我错误:

cat: i: No such file or directory

我还尝试将一行移到文件的开头:

$for i in *.txt; do echo "#c wavelength d %4.0f angstrom"|cat - i > /tmp/out && mv /tmp/out i; done
cat: i: No such file or directory
cat: i: No such file or directory
cat: i: No such file or directory

我以为我会携带 .txt 文件的名称,但我不认为我就是这样。如何让 i 携带文件名/扮演文件的角色?

4

1 回答 1

3

在你的循环中,i是一个变量,你需要用 访问变量的内容$,所以它应该是cat $i >> X。否则,它认为您想要cat名为 的文件i,该文件不存在。 $i为您提供存储在变量中的名称i

你会遇到同样的问题mv......你会想要\mv X $i

于 2013-07-17T20:37:00.840 回答