Linuxでディレクトリを再帰的にリネームする方法

この記事では、Linuxでディレクトリを再帰的にリネームする方法を詳しく解説します。具体的なコード例とその詳細解説、さらに多彩な応用例を提供します。Linuxで作業する際、特定のパターンに一致するディレクトリ名を一括で変更したいケースは多いですが、この記事で紹介するテクニックを使えば、そのような作業を短時間で効率的に行うことができます。

目次

基本的な再帰的リネームの方法

最も基本的な方法として、`find` コマンドと `rename` コマンドを使用します。

find . -type d -exec rename 's/old/new/g' {} \;

このコードは、カレントディレクトリから始めて、`old` という文字列を `new` に変更するディレクトリを探します。

コードの解説

– `find . -type d`: カレントディレクトリ(.)からディレクトリ(`-type d`)を探します。
– `-exec rename ‘s/old/new/g’ {} \;`: `find` で見つかった各ディレクトリに対して、`rename` コマンドを実行します。

応用例

大文字を小文字に変換

find . -type d -exec rename 'y/A-Z/a-z/' {} \;

解説

このコードは、ディレクトリ名に含まれるすべての大文字を小文字に変換します。

特定の拡張子を持つファイルを含むディレクトリのリネーム

find . -type d -exec sh -c 'ls "$1"/*.txt > /dev/null 2>&1 && rename "s/old/new/g" "$1"' _ {} \;

解説

.txtファイルを含むディレクトリだけを対象にしてリネームを行います。

日付を付加する

find . -type d -exec rename "s/$/$(date +\%Y\%m\%d)/" {} \;

解説

ディレクトリ名の末尾に現在の日付を付加します。

特定の文字をアンダースコアに変換

find . -type d -exec rename 's/ /_/g' {} \;

解説

ディレクトリ名中のスペースをアンダースコアに変換します。

まとめ

Linuxでディレクトリを再帰的にリネームする方法は多々ありますが、`find` コマンドと `rename` コマンドを使った基本的な方法から応用例まで、多くのケースで使用できる技術を解説しました。これらの方法を使えば、日常の作業を大いに効率化できるでしょう。

created by Rinker
オライリージャパン
¥3,080 (2024/07/19 02:58:25時点 Amazon調べ-詳細)

コメント

コメントする

目次