【问题标题】:Read a file in bash and for each line perfome copy and maintain sequence [duplicate]在 bash 中读取文件并为每一行执行复制和维护序列 [重复]
【发布时间】:2023-04-03 13:40:01
【问题描述】:

我的 txt 文件包含 jar 的名称,我想读取这个 txt 文件,并且对于每一行我想找到并移动具有相同名称和版本号的 jar(版本号可能会更改)从文件夹 X 到文件夹 JarSequence。 文本文件是 jar.txt,其中有 -

  • bbb
  • aaa
  • ccc

现在对于 txt 文件中的每一行,我想将 jar 复制到文件夹 JarSequence 中,以便文件夹 JarSequence 具有 -

  • bbb-1.0.1.jar
  • aaa-1.0.1.jar
  • ccc-1.0.1.jar

如果可能的话,我还想在 JarSequence 文件夹中保持与文本文件中相同的序列。

感谢您的帮助。

【问题讨论】:

  • ccc 有 1.0.2 而其他有 1.0.1。这是故意的吗?
  • 如果是故意的,如何确定是否附加"-1.0.2.jar"而不是"-1.0.1.jar"??
  • @DavidC.Rankin 抱歉,每个 jar 的版本号都相同(更新了问题)。但是当我从一个构建移动到另一个构建时,我需要它会有所不同,但对于所有 jar 仍然相同。例如 aaa- ${buildNumber}.jar bbb-${buildNumber}.jar 我们将 buildNumber 存储在变量中

标签: bash shell readfile file-copying


【解决方案1】:
#!/bin/bash

file="your_txt_file"
suffix="-1.0.1.jar"

while IFS= read -r jarfile
do
    #echo "$jarfile"
    mv "$jarfile" JarSequence/"$jarfile"${suffix}
done < $file

【讨论】:

  • 感谢您的快速回复,它会保留被复制的序列吗?
  • 如果这只是在每个文件名的末尾标记相同的文本(后缀),那么是的,它将保持相同的顺序。
  • 总是像这样测试脚本。我通常这样做:echo mv "$jarfile" JarSequence/"$jarfile"${suffix} 并执行脚本,只是为了看看会执行什么(一种“空运行”)。如果看起来不错,我会删除 echo 并运行脚本。
  • 但请注意,这将创建JarSequence/ccc-1.0.1.jar,而不是JarSequence/ccc-1.0.2.jar。换句话说,后缀是 static 在这个脚本中。如果您需要后缀来改变脚本的执行过程中,事情会变得更加复杂。
  • 感谢@Roadowl,对不起,我已经更正了每个 jar 将具有相同版本(内部版本号)的问题。是的,我需要改变后缀,我需要传递给脚本。
猜你喜欢
  • 1970-01-01
  • 2014-12-17
  • 2018-09-23
  • 2015-03-16
  • 2014-05-11
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多