使用文件中的行生成字符串和文件名

使用文件中的行生成字符串和文件名

我有一个文件 ,foo.txt每行都有一个文件夹名称:

folder_1
folder_2
folder_3

我想做这样的事情:

cat foo.txt | xargs -I {} echo 'function {}() { return stuff; }' > {}/function.js

换句话说,我想逐行读取文件,然后使用每一行创建一个字符串并创建存储该字符串的文件的名称。

如何从 bash 的命令行执行类似的操作?

答案1

只需循环文件中的所有行:

while read line
do
    echo "function $line() { return stuff; }" > "$line/function.js"
done < foo.txt

当然,这假设您已经在foo.txt.如果不是这种情况,那么首先使用 创建它们mkdir "$line"


另一种方法,用awk而不是循环是:

awk '{printf("%s\n","function "$0"() { return stuff; }")>$0"/function.js"}' foo.txt

答案2

xargs您可以使用+来做到这一点sh -c

<file1.txt xargs -d'\n' -L1 sh -c 'mkdir -p -- "$0"
printf %s\\n "function $0() { return stuff; }" >"$0"/function.js'

-I {}如果您的文本文件包含时髦的内容(例如像 之类的行- $'\n' \ $PATH),则不使用该构造来避免扩展。

相关内容