私はYouTubeを使ってYouTubeから何十ものファイルをダウンロードしましたyoutube-dl
。良い機能です。全て検索してみると相当数がランダム数字と大文字、小文字で終わる場合が多かったです。良いvideo_name_number_of_video_-_the_name_of_episode_part_number-12BUInjas32d1.avi
。
$ rename -n 's/-.*avi/.avi/i' *.avi
- 最初のものを選択し-
てvideo_name_number_of_video_.avi
名前を残してください。
文字と数字の組み合わせを削除するオプションはありますか?助けてくれてありがとう。そしてその中には13桁の数字しかありません。
追加:誰かが私が望むものを尋ねました。だから私は明らかにファイル名からその13桁の数字を削除し、それ以来幸せに暮らしたいと思います。私の目標を達成するための実用的な質問を大胆に投げました。
答え1
私はこれがYouTubeのビデオIDであると仮定します。次の正規表現を使用して削除できます。
s/-[^-.]{13}\.avi$/.avi/
これをいくつかの部分に分割すると、次のようになります。
-
- ただハイフンだけ[^-.]{13}
- ハイフンやピリオドではなく、正確に13文字\.avi
- ファイル名の「.avi」と一致します。$
アンカーポイントは文字列(ファイル名)の末尾にあります。
答え2
rename -n 's/-[^-]*\.avi$/.avi/i' ./*
アイデアは、文字列の最後にダッシュではなく文字()の後に()が続く一連の-
文字列を一致させることです。最初から最後まで一致します。*
[^-]
.avi
$
-.*avi
-
avi
そしてzsh
:
autoload zmv # in ~/.zshrc as it's a damn useful command
zmv -n '(#i)(*)(-*)(.avi)' '$1$3'
(#i)
大文字と小文字を区別するワイルドカードに使用されます。
答え3
これは一つの方法です。すべてのファイル名をテキストファイルfilename.txtに入れます。
video_name_number_of_video_-_the_name_of_episode_part_number-12BUInjas32d1.avi video_name_number_of_video_-_the_name_of_episode_part_number-12BUInjas32d2.avi video_name_number_of_vid 32d3.avi
スクリプトを書く:
#/bin/bash -
while IFS= read -r line
do
mv -- "$line" "${line%-*}.avi"
done < filename.txt