ファイルから名前のパターンを削除する

ファイルから名前のパターンを削除する

youtube-dlでいくつかのファイルをダウンロードしました。名前はいつもこんな感じです

foo - baar -PSUHDUWHDAIHDWU.ogg/mp3/...

フォルダー内のすべてのファイルから末尾のランダムな文字 (最後の「-*」を削除) を削除して、名前を次のようにするにはどうすればよいでしょうか。

foo - baar.mp3/ogg/...

「名前の変更」を試してみましたが、どのようなパターンを使用すればよいかわかりません。次のようなものになると思います: "#-*"

答え1

では、拡張子のファイル名の末尾にのみ が現れるものrenameと仮定すると、次の式を使用できます。.

s/-[^-]*\././

これは、ハイフンの後に続く、 までのハイフン以外の文字を に置き換え..最後のハイフンとそれに続く文字を削除します。次のように使用します。

rename -n 's/-[^-]*\././' *

変更した名前が問題ない場合は、 なしで実行します-n

答え2

パターンを置き換えるハッキングの代わりに、youtube-dlにこれらのランダムな文字(実際にはビデオID)を最終的なファイル名に含めないように指示することができます。これは次のように行うことができます。出力テンプレートたとえば、 という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

結果

ここに画像の説明を入力してください

関連情報