【问题标题】:Extract the file name of last slash from path [closed]从路径中提取最后一个斜杠的文件名[关闭]
【发布时间】:2019-08-16 08:55:49
【问题描述】:

我现在在特定位置查找文件,现在我需要使用 shell 脚本从该路径中提取最后一个斜杠之后的文件名,而无需像 *.war 这样的扩展名。

我尝试在下面找出路径中的数据:

find /data1/jenkins_devops/builds/develop/5bab159c1c40cfc44930262d30511ac7337805fa -mindepth 1 -type f -name '*.war'

例如-此文件夹“5bab159c1c40cfc44930262d30511ac7337805fa”包含多个 .war 文件,例如 interview.warauth.war,所以我希望输出是面试战。

有人可以帮忙吗?

【问题讨论】:

  • 什么阻碍了你?
  • 你试过什么?发生了什么?为什么它不起作用?为什么这被标记为 groovy?
  • @tim_yates 我试过这个 - echo "find /data1/jenkins_devops/builds/develop/ab7f302d157d839b4ac3d7917cfa2d550ba2e73e/auth.war" | awk -F'/' '{print $6}' 但没有得到正确的结果。
  • @tim_yates 实际上“ab7f302d157d839b4ac3d7917cfa2d550ba2e73e”是我的文件夹名称,其中包含多个 .war 文件,我需要打印该 war 文件的所有名称。

标签: linux bash shell ubuntu unix


【解决方案1】:

有很多优雅的方法可以实现目标。下面使用awk来达到目的:

find /data1/jenkins_devops/builds/develop/5bab159c1c40cfc44930262d30511ac7337805fa -mindepth 1 -type f -name *.war | awk -F "/" '{print $NF}' | awk -F "." '{print $1}'

Awk NF 返回字段数,您可以使用它来打印最后一列。首先,您使用 / 作为 awk 中的字段分隔符分隔列,并使用它来打印最后一列。然后使用. 作为分隔符并打印第一列以达到所需的结果。它是在上面的脚本中完成的。

【讨论】:

  • 实际上我正在从下面提到的特定位置找到文件,并且需要在没有 .war 的情况下打印最后一个文件名战争
  • @uday 将它们传送到 awk。请参阅编辑后的答案。
【解决方案2】:

只需使用basename:

the_path="/data1/jenkins_devops/builds/develop/ab7f302d157d839b4ac3d7917cfa2d550ba2e73e/auth.war"
basename "$the_path" .war

【讨论】:

  • 实际上我正在从下面提到的特定位置找到文件,并且需要在没有 .war 的情况下打印最后一个文件名战争'
  • 所以?因此,通过 while 读取循环或 xargs 将它们传送到 basename。
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 2012-11-25
  • 2012-05-19
  • 2022-06-23
  • 1970-01-01
  • 2016-07-30
  • 2019-06-08
  • 1970-01-01
相关资源
最近更新 更多