youtube-dlを介してさまざまなソースからダウンロードした多数の動画の名前を変更しようとしています。ご存知のように、yt-dlはファイル名にビューコードを追加します。
例えば
ビデオタイトル-dQw4w9WgXcQ.mp4
ファイル名から最後のX文字を削除するプログラムまたはCLIコマンドを探しています。この例では、数字は12文字です(ファイル拡張子.mp4を除く)。
私はそのようなコマンドを検索してみましたが、うまくいくものが見つかりませんでした。また、KReenameを試しましたが、「最後の文字から始まるX文字を削除する」に対応する機能が見つかりませんでした。その機能を使用していたWindowsプログラムが記憶されます。
これを行うために使用できる「簡単な」コマンドはありますか?またはプログラムまたはKRenameの一部の設定です。 PyRenameを試しましたが、運もありません。
答え1
そしてprename
(真珠名前の変更)コマンド:
prename 's/(.*).{12}(\.mp4)/$1$2/' *.mp4
答え2
そしてzsh
:
autoload zmv # best in ~/.zshrc
zmv -n '(*)?(#c12).mp4' '$1.mp4'
(満足したら削除してください-n
(模擬実行))。
答え3
これについて考える1つの方法は、最後の16文字(拡張子を含む)を削除することです。強く打つ パラメータ拡張これを行うには:
${parameter:offset:length}
部分文字列拡張。最大に拡張してください。
length
キャラクターの価値parameter
指定された文字から始まるoffset
。もしparameter
はい@
、添え字付きのインデックス配列@
または*
あるいは、連想配列名を使用する場合、結果は以下の説明のように変化します。もしlength
省略、値の部分文字列に拡張parameter
指定された文字から始まるoffset
値の終わりまで拡張されます。length
そしてoffset
算術式です(参照:算術評価[次のような])。もし
offset
値の終わりに文字オフセットとして使用されるゼロより小さい数値として評価されます。parameter
。もしlength
値の終わりに文字オフセットとして解釈されるゼロより小さい数値として評価されます。parameter
複数の文字の代わりに、拡張子は文字間の文字です。offset
そしてその結果。コロンとの混同を避けるために、負のオフセットはコロンと少なくとも1つのスペースで区切る必要があります。:-
拡張。
負の数には、コロンの後にスペースが必要であることを考慮すると、次のようにすることができます。
#!/bin/bash
for f in *.mp4; do
mv -- "$f" "${f:0: -16}.mp4"
done
exit
最初に実行し、次にテスト実行で許容可能な結果が出たときに実行してテストしますecho mv -- "$f" "${f:0: -16}.mp4"
。echo
(否定的なサポートノートlength
は 比較的Bashに最近追加されました。 )
A Star is Born-dQw4w9WgXcQ.mp4
とがある場合、A Star is Born-foobar42quuxBAZ.mp4
両方とも名前が変更されますA Star is Born.mp4
(つまり、「衝突」が発生します)。元のファイルを実行すると、mv
2番目のファイルの名前が変更されると、最初のファイルが破損します。mv -i
これを防ぐためにこれを使用することもできます。
答え4
Thunar バッチの名前変更ツール( thunar -B
)。
KRenameはこの操作を実行できません。 KDE用に特別に設計されていますが、スタンドアロンで使用できる不完全なThunarの名前変更フォークがあります。バイオニックバッチの名前変更"). 一部のデフォルトオプションがありません(設定を記憶し、リスト項目を並べ替えます)。
この問題は、Thunarファイルマネージャと他のxfceツールに付属のThunar renamerに存在します。 ThunarはPlasma KDEのデフォルトのファイルマネージャを妨げる可能性があります:私は次のことを使います。このソリューション。
さらなる回答として[1-[#length-12]]
Krenameのオプションの1つ:
このオプションは実際に配置されます。 ファイル名(ラベル) -単純なファイル名(ラベル) -ファイル名(落ちる):カスタム名。
最後に使用したオプションが記憶されます(krenameを再起動した後)。ファイル名(ラベル) -高度なファイル名(ラベル) -金型(落ちる)。