Переименование файла с родительским и родительским каталогом - PullRequest
0 голосов
/ 06 июня 2018

Если есть путь к файлу, такой как:

/path/topic/day/name.pdf

Есть ли способ в bash переименовать файл, включив в него имя родительского и родительского каталога, в котором находится файл?

Например.

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

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 06 июня 2018
#!/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...