ディレクトリ内のすべてのファイル名を数字に変更

ディレクトリ内のすべてのファイル名を数字に変更

私のディレクトリには、次のファイル名を持つファイルがあります。

01 ABC DEF.m4a
02 DEF ABC.m4a
etc...

私はこれを次に変換したいと思います。

1.m4a
2.m4a
etc...

コマンドラインを使用してこれをどのように実行できますか?

ベストアンサー1

Perlバージョンrename(時々と呼ばれるprename)がある場合はそれを使用できます。

rename -n 's/^0*(\d+).*(\.m4a)\z/$1$2/s' [0-9]*.m4a

満足すれば、好きなように機能します。フラグを削除してください-n

これは正規表現の一致を使用します。

  • ^- 開始するにはテーマが必要です。
  • 0*- 0個以上の「0」と一致します。
  • (\d+)- マッチそして覚えて1 つ以上の小数点以下の桁数
  • .*- すべてが一致するまで...
  • (\.m4a)- マッチそして覚えて テキスト「.m4a」
  • \z- トピックの終わりが必要です¶
  • sフラグ -.すべてのバイトが一致することを確認します(改行を含め、ファイル名にも有効です)。

$1次に、とを使用して$2角括弧式の値を参照します。


ここでは1が必須ではありません。シェルが引数として指定したファイル名はすべてで終わり、.m4a古いファイル名は.*貪欲であるためです。$ここでも機能できますが、renameファイル名(改行文字を含むゼロ以外のバイトシーケンスである可能性があります)に対して機能します。たとえば、タイトルの最後に一致することをお勧め\zします。$\z今後最後の改行文字です。

おすすめ記事