在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中将文本附加到具有模式匹配名称的文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章