将文本添加到文件列表

将文本添加到文件列表

我正在尝试使用 xargs 来操作一组文件。

名为 filelist.txt 的文件包含文件名

john 
paul 
george
ringo
steve 

我可以使用以下命令创建所有这些文件:

cat filelist.txt | xargs touch

我该如何将相同的文本“hello”添加到列表中的每个文件?此外,我该如何根据文件名添加文本……例如,将“first name: steve”添加到 steve 文件?

答案1

附加hello到每个文件:

cat filelist.txt | while read line; do echo hello >> $line; done

将文件名附加到每个文件:

cat filelist.txt | while read line; do echo $line >> $line; done

答案2

我已将@steven 标记为正确,因为它可能更具可读性,但我对使用的解决方案感到好奇xargs。这是我发现的:

cat filelist.txt | xargs -I $0 sh -c "echo 'hello' > $0"
cat filelist.txt | xargs -I $0 sh -c "echo 'hello $0' > $0"

意思是在即将到来的字符串中-I $0替换。您可以使用更易读的命令,例如或等等。在字符串中执行命令。不确定为什么需要这样做。$0$NAMEperson_namesh -c

答案3

# cat filelist.txt | xargs -t -I % sh -c "{ echo 'hello %' >> filelist.txt; }"

-I 开关将传递字符串以及占位符 %。使用 -c 选项,命令将从字符串中读取。如果字符串后面有参数,则它们将被分配给位置参数。echo 将在字符串后附加 hello,从而覆盖 filelist.txt 文件。

相关内容