Linuxファイル名変更を完全マスター!MvとRenameの使い分けを徹底解説
Linuxファイル名変更を完全マスター!MvとRenameの使い分けを徹底解説にまつわる役立つ知識を分かりやすく発信ます。
最小構成のコンテナイメージ(Alpineや軽量Linux環境)などでは、renameコマンドがプリインストールされていない環境も珍しくありません。そうした現場で威力を発揮するのが、Bash標準の機能のみで完結させるLinux bash ファイル名一括置換です。
Bashのパラメータ展開を用いたループ処理
Bashのパラメータ展開(${var//pattern/replace} や ${var%.ext})を用いることで、外部パッケージに依存せず高速に変更を行えます。
# .txt ファイルの拡張子を .md に一括置換 for file in *.txt; do [ -f "$file" ] || continue mv -- "$file" "${file%.txt}.md" done
上記コードの -- は、仮にファイル名の先頭がハイフン(-)で始まっていた場合に、コマンドがオプションと誤認する事故を防ぐための防御的記述です。
findコマンドとxargsによる階層構造の再帰的変更
特定のディレクトリ配下にネストされたサブディレクトリも含めてファイルを改名する場合、findコマンドとの連携が必須となります。
# 配下の全 .htm ファイルを .html に再帰的に変更(スペース・特殊文字対応) find . -type f -name ".htm" -print0 | while IFS= read -r -d '' file; do mv "$file" "${file%.htm}.html" done
-print0 と read -d '' の組み合わせは、ファイル名に改行や空白が含まれている場合でも誤作動を起こさない堅牢な記法として、エンタープライズのスクリプト開発で標準化されています。