
Я скачал несколько файлов с помощью youtube-dl. Имя всегда такое
foo - baar -PSUHDUWHDAIHDWU.ogg/mp3/...
Как удалить эти случайные буквы (вырезать последний «-*») в конце всех файлов папки, чтобы имя получилось таким:
foo - baar.mp3/ogg/...
Я пробовал что-то с "rename", но не знаю, какой шаблон использовать. Думаю, должно быть что-то вроде этого: "#-*"
решение1
При rename
условии, что a .
появляется только в конце имени файла для расширения, можно использовать следующее выражение:
s/-[^-]*\././
Это заменяет дефис, за которым следуют символы, отличные от дефиса, до .
, на .
, фактически удаляя последний дефис и символы, следующие за ним. Используйте это так:
rename -n 's/-[^-]*\././' *
Если измененные имена выглядят нормально, то запустите без -n
.
решение2
Вместо того, чтобы хакать с заменой шаблона, вы можете просто сказать youtube-dl не включать эти случайные буквы (это на самом деле идентификатор видео) в конечное имя файла. Это можно сделать с помощьювыходной шаблон, например, youtube-dl -o "%(title)s.%(ext)s" 3CUz4M3M1r8
приведет к Ton Steine Scherben - Alles verndert sich.mp4
.
решение3
Использование bash
расширения параметров:
#!/bin/bash
shopt -s extglob
for file in *(*mp3|*ogg); do
ini="${file%-*}"
ext="${file##*.}"
mv "$file" "${ini}.${ext}"
done
Здесь мы использовали
extglob
функцию расширения параметровbash
.ini
будет содержать начальную часть, отбрасывая часть, начиная с-
последнейext
будет содержать расширение, напримерogg
,mp3
Тест :
$ ls
scr.sh Ton Steine Scherben - Ich will nicht werden, was mein Alter ist-WpLfJZvnWSw.ogg
Ton Steine Scherben - Alles verändert sich-3CUz4M3M1r8.ogg Ton Steine Scherben - Keine Macht für Niemand-XtMPGhXnzWE.mp3
Ton Steine Scherben - Der Traum ist aus-WYZCovq71XE.ogg Ton Steine Scherben - Komm schlaf bei mir-Nr9V_UH04eA.mp3
Ton Steine Scherben - Feierabend-BopYtPtjlkI.ogg
$ bash scr.sh
$ ls
scr.sh Ton Steine Scherben - Ich will nicht werden, was mein Alter ist.ogg
Ton Steine Scherben - Alles verändert sich.ogg Ton Steine Scherben - Keine Macht für Niemand.mp3
Ton Steine Scherben - Der Traum ist aus.ogg Ton Steine Scherben - Komm schlaf bei mir.mp3
Ton Steine Scherben - Feierabend.ogg
решение4
Сценарий
#!/bin/bash
# Author : Serg Kolo
# Description: script for renaming files
# for http://askubuntu.com/q/626258/295286
for file in *; do
FILENAME=$( awk -F '-' '{gsub(" ","");print $1"-"$2}' <<< "$file")
EXTENSION=$( awk -F '.' '{print $2}' <<< "$file")
mv "$file" ./"$FILENAME.$EXTENSION"
done
Полученные результаты