【问题标题】:Renaming file with parent and grandparent directory使用父目录和祖父目录重命名文件
【发布时间】:2018-06-06 00:43:19
【问题描述】:

如果有这样的文件路径:

/path/topic/day/name.pdf

有没有办法在 bash 中重命名文件,包括文件所在的父目录和祖父目录的名称?

例如。

/path/topic/day/topic-day.pdf

感谢您的帮助

【问题讨论】:

  • 给新手的建议:如果一个答案解决了您的问题,请点击旁边的大复选标记 (✓) 接受它,也可以选择投票(投票至少需要 15 个声望)点)。如果您发现其他答案有帮助,请给他们投票。接受和投票有助于未来的读者。请参阅[相关帮助中心文章][1] [1]:stackoverflow.com/help/someone-answers
  • Stack Overflow 不是代码编写服务。请出示您的代码。由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: linux bash shell unix filenames


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

function assemble_path() {
  echo "$(realpath "$1" | rev | cut -d'/' -f2- | rev)"
}

function assemble_parents() {
  echo "$(echo "$1" | rev | cut -d"/" -f-2 | rev | tr '/' '-')"
}

function rename_to_parents() {
  filetype=$(echo "$1" | rev | cut -d"." -f1 | rev)
  filepath=$(assemble_path "$1")
  parents=$(assemble_parents "$filepath")
  mv "$(realpath "$1")" "$filepath/$parents.$filetype"
}
rename_to_parents "$1"

用法:

  1. 将此脚本保存在文件中,例如rename.sh
  2. 为其添加执行权限,例如chmod u+x rename.sh
  3. 使用文件作为参数执行它,你想重命名例如./rename.sh name.pdf

输出(/path/topic/day/name.pdf):

/path/topic/day/topic-day.pdf

【讨论】:

    猜你喜欢
    • 2019-10-07
    • 2014-09-08
    • 2014-02-11
    • 1970-01-01
    • 2016-04-05
    • 2016-07-15
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多