
フォルダー内に、などのアルファベット以外の文字を含む .jpg ファイルが多数あります! , ( ) ^ & .
。
ファイル名を変更して、何もないものがA-Z a-z 0-9
何もないものに置き換えられるようにする必要があります。また、スペースもファイルに置き換えられ、-
.mp4$$$.jpg で終わる必要があります。この部分はそのままにしておく必要があります。
例えば、ファイルが
ask me anything.mp4001.jpg
ask, me. anything! 2.mp4001.jpg
ファイル名は次のように変更する必要があります
ask-me-anything.mp4001.jpg
ask-me-anything-2.mp4001.jpg
答え1
bash では、次のように実行できます。
for f in *.jpg
do
if [[ $f =~ ^(.*)(\.mp[[:digit:]]+\.jpg) ]]
then
prefix=${BASH_REMATCH[1]}
suffix=${BASH_REMATCH[2]}
prefix=${prefix//[^[:alnum:] ]/}
prefix=${prefix// /-}
echo mv -- "$f" "${prefix}${suffix}"
fi
done
これはファイルをループし*.jpg
、各ファイル名をパターン (任意の.mp
文字) に続いて (1 つ以上の数字)と照合します.jpg
。ファイル名が一致すると、名前を変更するために切り離されます。サフィックスにはピリオドが含まれているため、プレフィックスのピリオドを削除するために別々に保存します。英数字またはスペース以外の文字を削除した後、すべてのスペースをダッシュに置き換えます。その後、ファイル名がコマンド用に再構築されます。結果が正しい場合は をmv
削除します。echo
元のファイル名にダッシュを残しておきたい場合は、最後の 2 つのprefix
割り当てを次のように置き換えます。
prefix=${prefix// /-}
prefix=${prefix//[^[:alnum:]-]/}