创建与文件中的文本行同名的文件?

时间:2018-10-04 06:58:52

标签: bash

我在每行上都有不同文本的文件,例如:

blue  
red  
black
blue and red
red and black

如何为每一行文本创建文件,并且文件名要与文本相同?还要在文件中添加扩展名?文件应如下所示:

blue.txt  
red.txt  
black.txt
blue and red.txt
red and black.txt

编辑:我犯了一个错误,因为我还有一些文本行,其中包含多个单词,它们之间有空格。抱歉。

3 个答案:

答案 0 :(得分:4)

逐行读取输入文件:

while read basename ; do
    touch "$basename".txt
done < list_of_names.txt

答案 1 :(得分:1)

您可以像这样使用 GNU Parallel

parallel touch {}.txt < filelist

如果您想查看将要执行的操作,而无需实际执行任何操作,请使用:

parallel --dry-run touch {}.txt < filelist

答案 2 :(得分:1)

使用sedxargs

sed -e 's/$/.txt/' input.txt | xargs -d '\n' touch

其中

  • sed$文件中读取的每一行的行尾(.txt)替换为input.txt
  • xargs根据sed命令的结果构建参数列表,并将其传递给touch命令;
  • -d '\n'选项将换行符\n指定为输入项的分隔符。