find
を使用したソリューション :
ファイルのみの名前を変更するには :
find /your/target/path/ -type f -exec rename 's/special/regular/' '{}' \;
ディレクトリのみの名前を変更するには :
find /your/target/path/ -type d -execdir rename 's/special/regular/' '{}' \+
ファイルとディレクトリの両方の名前を変更するには :
find /your/target/path/ -execdir rename 's/special/regular/' '{}' \+
別のツールをインストールしてもかまわない場合は、rnm を使用できます:
rnm -rs '/special/regular/g' -dp -1 *
すべてのディレクトリ/サブディレクトリを通過します (-dp -1
のため) ) と special を置き換えます 通常で
@speakr の回答がヒントになりました。
-execdir を使用してファイルとディレクトリの両方を変換する場合は、 -type f
も削除する必要があります 示されている例から。スペルアウトするには、次を使用します:
find /your/target/path/ -execdir rename 's/special/regular/' '{}' \+
また、 g
を追加することを検討してください all を置換する場合は、正規表現への (グローバル) フラグ special
の出現 regular
で 最初の出現だけでなく、特定のファイル名で。例:
find /your/target/path/ -execdir rename 's/special/regular/g' '{}' \+
special-special.jpg
を変換します regular-regular.jpg
まで .グローバル フラグがないと、regular-special.jpg
になります。 .
参考までに:GNU Rename はデフォルトでは Mac OSX にインストールされていません。 Homebrew パッケージ マネージャーを使用している場合は、brew install rename
これを修正します。
これをやってみてください (require bash --version
>=4):
shopt -s globstar
rename -n 's/special/regular/' **
-n
を削除します テストが OK になったら切り替える
これを実行できる場合とできない場合がある同じ名前のツールが他にもあるので、注意してください。
次のコマンドを実行すると (GNU
)
$ file "$(readlink -f "$(type -p rename)")"
のような結果が得られます
.../rename: Perl script, ASCII text executable
以下を含まない:
ELF
これは適切なツールのようです =)
そうでない場合は、Debian
でデフォルトにします (通常は既にそうなっています)。 および Ubuntu
のような派生物 :
$ sudo update-alternatives --set rename /path/to/rename
(/path/to/rename
を置き換えます perl's rename
のパスに コマンド。
このコマンドがない場合は、パッケージ マネージャーを検索してインストールするか、手動で行ってください
最後になりましたが、このツールはもともと、Perl の父である Larry Wall によって作成されました。