すべてのフォルダとファイル名の文字列を置き換える方法

すべてのフォルダとファイル名の文字列を置き換える方法

すべてのフォルダとファイル名の文字列を別の文字列に再帰的に置き換える方法は?私はRed Hat 6を実行しており、次のように見つけることができます。

find . -name \*string\*

ファイルの文字列を使用してこれを実行しました。

find . -type f -exec sed -i 's/string1/string2/g' {} +

しかし、同様の方法ですべてのファイル名をどのように変更できますか?

ベストアンサー1

使用findrename:

find . -type f -exec rename 's/string1/string2/g' {} +

このコマンドの意味の1つは、現在のディレクトリ()からすべてのファイル()をfind . -type f検索することです。-type f.

  • この-execオプションは、見つかっfindたファイルごとにコマンドを実行するように指示します。

  • このrenameコマンドはファイルの名前を変更するために使用されます。ここで使用される構文は、Perlバージョンのrename

  • 's/string1/string2/g'検索する内容と置換する内容を指定する正規表現です。この場合、string1置き換える文字列はstring2置換文字列です。末尾のエントリはファイル名のすべてのエントリを/g置き換えます。string1

  • この{}記号は、見つかったファイル名のプレースホルダーですfind

  • +最後のコマンドは、find複数のファイル名を rename コマンドに一度に渡すように指示します。これは、個々のファイルごとに rename を呼び出すよりも効率的です。

したがって、要約すると、このコマンドは現在のディレクトリ内のすべてのファイルを検索し、見つかったrename各ファイルのファイル名をすべて変更するコマンドを実行しますstring1string2

おすすめ記事