Если есть путь к файлу, такой как:
/path/topic/day/name.pdf
Есть ли способ в bash переименовать файл, включив в него имя родительского и родительского каталога, в котором находится файл?
Например.
/path/topic/day/topic-day.pdf
Спасибо за вашу помощь
#!/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"
Использование:
rename.sh
chmod u+x rename.sh
./rename.sh name.pdf
Вывод (для /path/topic/day/name.pdf):