ファイル名の最初のピリオドの前のすべての文字を削除するには?

ファイル名の最初のピリオドの前のすべての文字を削除するには?

ファイル名が最大4つの数字で始まるファイルは1366です。たとえば、

128.unique filename.flac
6.unique filename.flac
1288.unique filename.flac

すべてのファイルが次のように存在するように、すべての数字とピリオドを削除したいと思います。

unique filename.flac
unique filename.flac
unique filename.flac

Ubuntu 16.04を実行しています。この目標をどのように達成できますか?

答え1

シェルを使う

次のファイルから始めましょう。

$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 

次のコマンドを実行してみましょう。

$ for f in [0-9]*flac; do mv "$f" "${f#*.}"; done

上記の実行後のファイルは次のようになります。

$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 3.flac'

for f in [0-9]*flac; dofor数字で始まり、で終わるすべてのファイル名に対してループを開始しますflacmv "$f" "${f#*.}"ファイル名の先頭(最初のピリオドを含む)を削除します。doneサイクルの終わりを示しますfor

Perlrenameコマンド

そこに2つあります互換性がないこのユーティリティはPerlに付属のコマンド(時々とも呼ばれる)renameで動作します。renameprename

別のバージョンがインストールされている場合、renameこの方法は機能しません。

prenameこのファイルで再起動し、次のコマンドを実行してみましょう。

$ ls
'1288.unique filename 3.flac'  '128.unique filename 1.flac'  '6.unique filename 2.flac'
$ prename 's/^\d+\.//' [0-9]*flac
$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 3.flac'

Perlの名前を変更するには正規表現を使用します。 \d+\.ピリオドが後に続く 1 つ以上の数字と一致します。 ^この数字はファイル名の先頭に表示する必要があります。 s/^\d+\.//これらの数字とピリオドは何でも置き換えられます。

関連情報