このエントリーをはてなブックマークに追加


ファイル名の拡張子を一気に置換したり追記や不要部分を削除する方法・rename(rename.ul)

ファイル名の拡張子を一気に置換したり、不要な部分を削除したり、不足分を追記したりする場合は、rename(rename.ul)コマンドが便利です。
尚、RedhatやCentOSでは、rename、Debian、Ubuntuの場合は、rename.ulコマンドとなります。
コマンド名が異なる理由は、DebianやUbuntuだと、Perlスクリプトのrenameが起動されてしまうからです。
以下は、Ubuntu16.04でしたときの出力です。Debian系だと、renameがPerlスクリプトであることが確認できます。

$ lsb_release -d
Description:	Ubuntu 16.04.5 LTS
$ file `which rename`
/usr/bin/rename: symbolic link to /etc/alternatives/rename
$ ls -l /etc/alternatives/rename
lrwxrwxrwx 1 root root 20 12月 25  2016 /etc/alternatives/rename -> /usr/bin/file-rename
$ file /usr/bin/file-rename
/usr/bin/file-rename: a /usr/bin/perl -w script, ASCII text executable

したがって、Redhat, CentOS系では、renameコマンド、Debian, Ubuntu系では、rename.ulとなります。

また、オプションが適切では無い場合、ファイルが消えてしまう場合がありますので、
色々テストをして使用してください。


rename (rename.ul) コマンドを使ってファイルの拡張子を一気に変換する

以下の例では、拡張子datをtxtに置換している例になります。

  1. テスト用のディレクトリを作成しcd(Change Directory)しました。
    $ mkdir rename_test
    $ cd rename_test/
  2. 以下のように拡張子datを3ファイル、log、csvファイルを各1ファイル作成しました。
    $ touch a.dat b.dat c.dat d.log e.csv
    $ ls 
    a.dat  b.dat  c.dat  d.log  e.csv
  3. renameコマンドを使って拡張子datをtxtに変換します。
    $ rename.ul .dat .txt *.dat
  4. 変換後lsコマンドにてファイル名一覧を表示しています。
    拡張子datの3ファイルがtxtに変換されているのが確認できます。
    $ ls
    a.txt  b.txt  c.txt  d.log  e.csv

構文は以下のようになります。

  • Redhat, CentOS
    rename .変更前拡張子 .変更後拡張子 対象ファイル
  • Debian, Ubuntu
    rename.ul .変更前拡張子 .変更後拡張子 対象ファイル

上記の例では、変更前拡張子が .dat で変更後拡張子が .txt を指定しています。
対象ファイルは、ワイルドカード(*)を使用し *.dat を指定しています。

ファイル名内の不要な部分を削除する

rename(rename.ul)を使って、ファイル名内の不要な部分を削除する実行例です、。

  1. テスト用のディレクトリを作成しcd(Change Directory)しました。
    $ mkdir rename_test2
    $ cd rename_test2/
  2. 3つのファイルを作成します。
    $ touch img1.jpg img2.jpg img3.jpg
    $ ls
    img1.jpg  img2.jpg  img3.jpg
  3. rename(rename.ul)コマンドを使って、imgを削除します。
    $ rename.ul img '' *.jpg
    $ ls
    1.jpg  2.jpg  3.jpg

上記でシングルクォートがを2つ指定しているのは、置換文字列なしなので、削除となります。

ファイル名に追記する

上記の削除したファイル名に対し追記してみます。

  • 以下のようにすれば、またファイル名に付与することができます。
    $ rename.ul '' IMG- *.jpg
    $ ls
    IMG-1.jpg  IMG-2.jpg  IMG-3.jpg

構文は以下のようになります。

  • Redhat, CentOS
    rename 対象となるパターン '' 対象ファイル~
  • Debian, Ubuntu
    rename.ul 対象となるパターン '' 対象ファイル~

上記の操作例では、対象となるパターンをシングルクォート2つで何もなしを指定し、置換するパターンに追記する文字列を指定しています。

以上、rename(rename.ul)を使い、複数ファイルを対象にファイル名を置換する例の紹介でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-28 (金) 01:19:30