如何在 bash 中从 list.txt 创建多个文件名?

Deb*_*raj 4 bash files touch

我想使用文件中的名称一次创建多个文件,list.txt我该怎么做?

样品list.txt

EOG090W002U
EOG090W00C1
EOG090W00DC
EOG090W00DE
EOG090W00E5
EOG090W00HR
EOG090W00MH
EOG090W00MS
EOG090W00PB
EOG090W00U4
EOG090W00UK
EOG090W00WM
EOG090W00WR
Run Code Online (Sandbox Code Playgroud)

假设我有这个list.txt包含一些 ID 号。现在我想使用这些 id 作为名称来制作单独的文件(例如EOG090W002U_M0.ctl, EOG090W00C1_M0.ctl, EOG090W00DC_M0.ctl)。此外,文件的内容需要相应地更改。例如EOG090W002U_M0.ctlEOG090W00C1_M0.ctl文件的内容将是

seqfile = EOG090W002U_p.phy
treefile = Constant.txt
outfile = EOG090W002U_M0_mlc
Run Code Online (Sandbox Code Playgroud)

或者

seqfile = EOG090W00C1_p.phy
treefile = Constant.txt
outfile = EOG090W00C1_M0_mlc
Run Code Online (Sandbox Code Playgroud)

其中*.phyConstant.txt将在同一文件夹中提供。

xen*_*oid 5

最简单:

xargs touch <List.txt
Run Code Online (Sandbox Code Playgroud)

神奇之处在于,xargs它将标准输入中的每一行都作为参数添加到命令中。

  • 尽管在这种情况下不需要(因为字符串不包含空格),但更通用的解决方案是`xargs -d '\n' touch &lt;List.txt`。例如参见[如何从包含空格的列表创建文件](https://unix.stackexchange.com/questions/523804/how-to-create-files-from-a-list-which-contain-space) (3认同)