Linux:ファイル名・ディレクトリ名を一括変換
目次
rename コマンド
$ sudo apt show rename Package: rename Version: 1.13-1 Priority: optional Section: perl Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org> Installed-Size: 51.2 kB Provides: libfile-rename-perl Depends: perl:any, perl (>= 5.26.0-6) Recommends: libio-stringy-perl, libpod-parser-perl Conflicts: libfile-rename-perl Breaks: perl (<< 5.26.0-6) Replaces: libfile-rename-perl, perl (<< 5.26.0-6) Homepage: https://metacpan.org/release/File-Rename Download-Size: 18.0 kB APT-Sources: http://ftp.jp.debian.org/debian bullseye/main amd64 Packages Description: Perl extension for renaming multiple files This package provides both a perl interface for renaming files (File::Rename) and a command line tool 'rename' which is intended to replace the version that used to be supplied by the perl package.
この階層の拡張子 .jpg ファイルのファイル名の [1]を削除
rename 's/\[1\]//' *.jpg
この階層の拡張子 .mp3 ファイルのファイル名の 先頭の1文字以上の数字と続くスペースを元の数字とハイフンに置換する
rename 's/^(\d+) /$1_/' *.mp3
この階層の拡張子 .mp3 ファイルのファイル名の 先頭の1文字以上の数字と続くスペースを削除する
rename 's/^\d+ //' *.mp3
この階層の拡張子 .mp3 ファイルのファイル名の 先頭の3文字を削除
rename 's/^...//' *.mp3
この階層の拡張子 .htm ファイルのファイル名の .htm を.html に変更する
rename 's/.htm/.html/' *.htm
この階層の全ファイルのファイル名の先頭に文字「20070610-」を加える
rename 's/^/20070610-/' *
for 文
for文で複数のファイルの拡張子を一括変更する
for nm in *.txt; do mv $nm ${nm%.txt}.doc; done
この階層の全ファイルのファイル名の先頭に文字「20070610-」を加える
for f in *; do mv $f 20070610-${f}; done
「temp」で始まるファイルを「HOGE」で始まるファイル名に一括変換する
for f in temp*; do mv $f HOGE${f#temp}; done
「10_」で始まるディレクトリ名から、「10_」を一括削除
for nm in 10_*; do mv $nm ${nm#10_}; done
%はその後ろにある文字が左の変数の末尾にあったら消して変数の内容を表示 #はその後ろにある文字が左の変数の先頭にあったら消して変数の内容を表示
先頭2文字削除
for f in *; do mv "$f" "${f#??}"; done
最初の f を F に置換
for f in *.jpg; do mv $f ${f/f/F}; done
f を全て F に置換
for f in *.jpg; do mv $f ${f//f/F}; done