1行に2つの条件/交換を使用して複数のファイルの名前を変更しますか?

1行に2つの条件/交換を使用して複数のファイルの名前を変更しますか?

一部の画像の名前を変更しようとしています。

IMG_1.JPG
IMG_2.JPG
IMG_3.JPG

私はandIMGで置き換えたいと思います。 - 2番目の部分を実行する方法を知っています。img.JPG.jpg

$ rename 's/\.JPG$/\.jpg/' *.JPG

私の問題はそれができないということですmv IMG_.JPGimg_.jpg複数のパターンをに渡すことができることを知っていますが、rename変更された小文字の値を持つ既存のファイル名を使用できないようです。

私は何をすべきですか?

ベストアンサー1

Perl rename コマンドを使用する必要があります。私のCentOSコンピュータでは「prename」と呼ばれます。

$ ls
IMG_1.JPG  IMG_2.JPG  IMG_3.JPG
$ prename 's/^IMG/img/;s/\.JPG$/\.jpg/' *JPG
$ ls
img_1.jpg  img_2.jpg  img_3.jpg
$

$ prename -h
Usage: prename [OPTION]... PERLEXPR FILE...
Rename FILE(s) using PERLEXPR on each filename.

  -b, --backup                  make backup before removal
  -B, --prefix=SUFFIX           set backup filename prefix
  -f, --force                   remove existing destinations, never prompt
  -i, --interactive             prompt before overwrite
  -l, --link-only               link file instead of reame
  -n, --just-print, --dry-run   don't rename, implies --verbose
  -v, --verbose                 explain what is being done
  -V, --version-control=METHOD  override the usual version control
  -Y, --basename-prefix=PREFIX  set backup filename basename prefix
  -z, -S, --suffix=SUFFIX       set backup filename suffix
      --help                    display this help and exit
      --version                 output version information and exit

The backup suffix is ~, unless set with SIMPLE_BACKUP_SUFFIX.  The
version control may be set with VERSION_CONTROL, values are:

  numbered, t     make numbered backups
  existing, nil   numbered if numbered backups exist, simple otherwise
  simple, never   always make simple backups

Report bugs to [email protected]
$

(時々呼び出される)renameの愚かなコマンドを使用するには、2つのステップを実行する必要があります。util-linuxrename.ul

$ ls
IMG_1.JPG  IMG_2.JPG  IMG_3.JPG
$ rename IMG img *JPG
$ rename JPG jpg *JPG
$ ls
img_1.jpg  img_2.jpg  img_3.jpg
$

おすすめ記事