在bash中将文本附加到具有模式匹配名称的文件[重复]

Posted

技术标签:

【中文标题】在bash中将文本附加到具有模式匹配名称的文件[重复]【英文标题】:Append text to a file with pattern matched name in bash [duplicate] 【发布时间】:2019-03-02 04:19:44 【问题描述】:

我正在尝试将一行添加到与其名称中的模式匹配的特定文件中。

例如我正在尝试将文本 STATUS PASSED 附加到名称包含 2018_09_26_04_51_30 的文件中。

date="2018_09_26_04_51_30"
echo "STATUS PASSED" >> "/test_dir/*$date*.txt"

上述命令正在创建名为 *2018_09_26_04_51_30*.txt 的新文件,这不符合我的目的!

假设有几个其他文件扩展名为*.txt,但这些文件的名称中都不包含$date

test_dir 目录包含:

test1-2018_09_26_04_50_48.txt
test2-2018_09_26_04_50_56.txt
test3-2018_09_26_04_51_03.txt
test3-2018_09_26_04_51_30_51S.txt 

所以,这里的文件test3-2018_09_26_04_51_30_51S.txt 是唯一的。

附:我必须在 Linux 和 AIX 中执行这个脚本。

任何帮助将不胜感激!

【问题讨论】:

aix 不是 linux,为什么你有两个标签? @Kent 正如我在最初的问题中所写,我需要一个可以在 Linux 和 AIX 平台上执行的命令! 【参考方案1】:

这样试试,

date="2018_09_26_04_51_30"
#cd /test_dir
echo "STATUS PASSED" >> $(ls /test_dir/*$date*.txt)

【讨论】:

你不需要命令替换和ls,你仍然应该引用$date>> /test_dir/*"$date"*.txt应该这样做。 不会在重定向中运行 touch xABCx; v=ABC; echo 'BLAH' >> *"$v"*; cat xABCx 有效,如果 glob 扩展到只有一个文件,否则你会得到“模糊重定向”,但你也可以使用 ls $(...) 解决方案。

以上是关于在bash中将文本附加到具有模式匹配名称的文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

sed编辑命令

在bash中将循环的每次迭代的输出附加到相同的内容

在Python中将文本附加到文件[重复]

如何在解析云代码中将文本文件附加到山魈邮件?

在hdfs中列出文件并将输出附加到文本文件

Bash:逐行遍历文件,找到特定的字符串并附加到每个后续行,直到找到相同的字符串