如何将文件名附加到...文本文件中列出的每个文本文件?

时间:2017-03-23 03:23:58

标签: bash shell

我有一个文本文件itemlist.txt,它由一系列字符串组成,如下所示:

Item1
Item2
Item3
Item4
...

每个字符串对应于与列表位于同一目录中的文本文件(所有文件扩展名都相同)。换句话说,列表中的Item1表示同一目录中的Item1.txt,依此类推。

使用此列表编辑每个文件的有效方法是什么,使用Bash shell脚本将每个文件的文件名附加到自身?换句话说," Item1"应该是Item1.txt等的最后一行。

我有基于GUI的工作流工具,一旦字符串就位,就可以进一步操作这些文本文件,但是我有很多东西可以学习Bash,这让我很难过。理想情况下,我想编写一个脚本,接受用户定义的参数来写入文件和文件名,但是......宝贝步骤!

我认为sed在操作文本文件方面比echo更好,但我无法正确循环文本文件。

2 个答案:

答案 0 :(得分:3)

echo可能是最简单的,因为你想追加

while read f; do
    echo "$f" >>"$f.txt"
done <itemlist.txt

答案 1 :(得分:2)

您可以使用简单的read循环:

while read -r item; do
  file="$item.txt"
  [[ ! -f "$file" ]] && continue # skip if file doesn't exist or if it is not a regular file
  printf '%s\n' "$item" >> "$file"
done < itmelist.txt