如何使用 .txt 文件中的行创建文件?

如何使用 .txt 文件中的行创建文件?

例如,我有一个名为 fileNames.txt 的文件。 cat >fileNames回报

abet

able

abacus

如何使用文件名将 abet、able 和 abacus 创建为 .txt 文件?我尝试使用带有 cat 和 touch 的管道。

答案1

有很多方法可以做到这一点,包括以下几种(假设是 GNU xargs):

sed -e '/^[[:space:]]*$/d' -e 's/$/.txt/' fileNames.txt | xargs -rd '\n' touch --

假设 fileNames.txt 中的每一行只有一个文件名。该sed脚本删除空行(感谢@rubynorails),并在将它们通过管道传输到 .txt 之前将“.txt”添加到每个文件名的末尾xargs touch

通过使用-d '\n'带有 xargs 的选项(一个 GNU 扩展,它告诉xargs仅使用换行符或 '\n' 作为分隔符而不是任何空格,并禁用引号处理),这甚至可以处理包含空格和其他潜在问题字符的文件名(或换行符本身除外\n)。例如,如果一行包含“abetable”,而没有,则会创建-d '\n'两个文件(abet和)。able.txt使用它,abet able.txt只会创建一个文件。

答案2

您可以使用 read 命令在 while 循环中使用输入重定向

while read line; do
    touch "${line}.txt"
done < fileNames.txt

答案3

awk 'NF>0' fileNames.txt | while read line; do touch "${line}.txt"; done

awk命令只是删除空行。

据我所知,这些行也是字面意思,因此行上的任何内容都会被写入文件名。

相关内容