【问题标题】:Append text to a file with pattern matched name in bash [duplicate]在bash中将文本附加到具有模式匹配名称的文件[重复]
【发布时间】: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 平台上执行的命令!

标签: linux bash append pattern-matching 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 $(...) 解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-09-20
  • 2018-09-06
  • 2020-08-29
  • 2014-04-04
  • 1970-01-01
  • 2021-05-24
  • 2018-10-18
  • 2012-03-07
相关资源
最近更新 更多