GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでファイルの名前を再帰的に変更する(拡張子を変更する)

わかった

find . -name "*.andnav" -exec rename -v 's/\.andnav$/\.tile/i' {} \;
./0/0.png.andnav renamed as ./0/0.png.tile
./0/1.png.andnav renamed as ./0/1.png.tile
./1/0.png.andnav renamed as ./1/0.png.tile
./1/1.png.andnav renamed as ./1/1.png.tile

もちろん、実際に実行するときは -v を削除してください。そうしないと、すべてのファイルを表示するのに時間がかかります


zsh の場合:

autoload zmv
zmv -n '(**/)(*).andnav' '$1$2.tile'

-n を削除します 実際に名前変更を実行します。


次のようなもの:

find . -name '*.andnav' -exec sh -c 'mv "$0" "${0%.andnav}.tile"' {} \;

説明

上記は、現在の作業ディレクトリ (.) から始まるディレクトリ ツリーのウォークを開始します。 )。ファイル名がパターン *.andnav に一致するたびに (例:foo.andnav ) 次のコマンドが実行されます:

sh -c 'mv "$0" "${0%.andnav}.tile"' foo.andnav

どこ $0 foo.andnav です と ${0%.andnav}.tile .andnav を置き換えます .tile のサフィックス 基本的に:

mv foo.andnav foo.tile

Linux
  1. LinuxファイルでACLを表示または変更する方法

  2. Linuxの名前変更コマンド

  3. Linux ディレクトリ内のファイルを再帰的にカウントする

  1. Linux / Unixで複数のファイルの名前をある拡張子から別の拡張子に変更する方法は?

  2. Linux でファイル名を大文字に変更

  3. 隠しファイルを再帰的にコピーする - Linux

  1. Linuxでファイルの名前を変更する方法

  2. Linuxでファイルの名前を変更する方法

  3. Linux でマウント ポイントを変更または名前変更する方法