使用父目录和祖父目录重命名文件

Renaming file with parent and grandparent directory

如果有这样的文件路径:

/path/topic/day/name.pdf

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

例如

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

感谢您的帮助

#!/bin/bash

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

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

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

用法:

  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