【问题标题】:How to get filename without version part and replace with older versions?如何获取没有版本部分的文件名并替换为旧版本?
【发布时间】:2022-01-27 14:33:05
【问题描述】:

我有一个包含新 jar 文件的文件夹,我需要将它们替换为不同文件夹中的旧版本文件,即使版本相同也需要替换。

我的示例文件名:

SC_S_SyncUp_V3.0.0-a7 20211221.jar 
gudusoft.gsqlparser-2.3.0.9.jar

当我尝试使用以下命令时,它只得到第一部分“SC”。

ls | cut -d "_" -f 1
SC

任何人都可以指导如何做到这一点。

【问题讨论】:

标签: linux shell


【解决方案1】:

如果您使用“ls -1”,“ls”会将每个文件放在一行中。然后一个“for循环”将处理每个文件名。 "basename" 可以删除已知的后缀,或者您可以使用 "sed" 删除最后一个 "." 之后的所有内容。

综合起来就是:

for file in $(ls -1)
do 
    f=$(echo $file | sed 's/\.[^\.]*$//')
    echo $f; 
done

我不确定你想用“替换旧版本”做什么。

【讨论】:

  • 不是后缀,_V3.0.0-a7 20211221.jar 部分在 SC_S_SyncUp_V3.0.0-a7 20211221.jar 和 -2.3.0.9.jar 部分在 gudusoft.gsqlparser-2.3.0.9.jar 部分跨度>
猜你喜欢
  • 2016-08-16
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 2018-03-15
  • 2017-01-17
  • 1970-01-01
  • 2018-11-26
  • 2015-03-01
相关资源
最近更新 更多