再帰的にファイルやディレクトリの名前から特定の文字列を除去する

最近、「再帰的に」ばっかりだな…。

メモ。

再帰的に処理を行い、対象のファイルやディレクトリの名前を変更します。

$ find ./ -name <削除したい文字列> -print0 | while read -r -d '' file; do mv "$file" "<ファイル名変更定義>"; done

カレントディレクトリのファイルのみ変更したい場合は、以下のように -maxdepth 1 オプションを設定して下さい。

$ find . -name <削除したい文字列> -maxdepth 1 -print0 | while read -r -d '' file; do mv "$file" "<ファイル名変更定義>"; done

具体例。

Macでエイリアスを作製すると、ファイル名に『のエイリアス』という文字列が付与されます。これを除去する例です。当然ですが、除去した結果のファイル名と同じ名前のファイルやディレクトリが存在した場合、エラーとなります。

$ find . -name "*のエイリアス" -print0 | while read -r -d '' file; do mv "$file" "${file%%のエイリアス}"; done