kobapan@wiLiki
Login
Linux

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

Debian
Emacs
Firefox
Gauche
JavaScript
Linux
Scheme
org-mode/latex

More ...