【问题标题】:Rename a single file using the first line in a .txt file使用 .txt 文件中的第一行重命名单个文件
【发布时间】:2017-03-14 23:04:48
【问题描述】:

目前我有两个文件,在这种情况下我们称它们为 example1.txt 和 example2.txt

如何将 example2.txt 重命名为 example1.txt 文件中的第一行?此文件中的第一行将始终是版本号,即 7.16.5.5,并且不应包含任何空格。

干杯!

【问题讨论】:

  • 请输入您尝试过的代码,我们会为您提供帮助
  • stackoverflow.com/questions/2439579/… 然后mv example2.txt $line
  • 嘿,如果以下任何答案对您有所帮助,请接受/支持关闭答案。

标签: bash text-files


【解决方案1】:
mv example2.txt "$(head -1 example1.txt)"

任何 insde $() 都将是子进程并首先执行。所以上面的命令翻译成:

mv example2.txt 7.16.5.5

要保留txt 扩展名:

mv example2.txt "$(head -1 example1.txt).txt"

【讨论】:

  • 谢谢你,这行得通!有没有办法重新添加 .txt 扩展名?当我重命名文件时,删除了 .txt 扩展名。
【解决方案2】:

或者,通过过滤,例如来自如下文件:

this is the version 1.2.3.4
bla

mv example2.txt "$(grep -m1 -oP '\d+(\.\d+)*' example1.txt).txt"

【讨论】:

  • 这将是一个与提出的问题完全不同的问题的好答案。
  • @slim 它也适用于他的问题......,例如如果文件在第一行包含单独的版本号。只是它更普遍..
  • 他要求使用 file1 的第一行重命名 file2。你的重命名 file1 使用 file1 中与你发明的模式匹配的第一行(恰好与他的示例匹配)。
  • @slim 啊,你说得对!谢谢。改变了。有时最好阅读整个问题... :) :)
猜你喜欢
  • 2013-09-14
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 2014-02-21
  • 2014-02-13
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多