ファイル名から特定の文字列を削除するには?

ファイル名から特定の文字列を削除するには?

私は自宅のHTPC(フレックスサーバー)用に多くのDVDをリッピングします。一部のファイル名には不要な文字が含まれています。元のファイル名文字列のほとんどを保持し、その中の不要なテキストを削除したいと思います。ここにいくつかの例があります。

  • 既存のファイル名、新しいファイル名のApollo 18-1.mp4削除規則:選択したディレクトリの「-1」で終わるすべてのファイル名を見つけて、「-1」文字列を削除します。-1Apollo 18.mp4
  • ファイル名ENTOURAGE_DISC1.Title1.avi.Title1新しいファイル名の削除ENTOURAGE_DISC1.avi規則:選択したディレクトリ内の「.Title1」で終わるすべてのファイル名を見つけて、「.Title1」文字列を削除します。

答え1

zshsを使用して、zmv次の2つの例で要件を推論します。

autoload zmv # best in ~/.zshrc
zmv '(*)(.Title<->|-<->).(mp4|avi)' '$1.$3'

<->任意の 10 進数のシーケンスです。 (<x-y>境界を提供しない形)。.Title1特定-1の拡張子だけが必要な場合は、いつでも次のように変更できます。

zmv '(*)(.Title|-)1(.[^.]##)' '$1$3'

[^.]##ドットではなく、1 つ以上の文字と一致します。

関連情報