各フォルダ/ディレクトリを確認し、「セクション」という単語が含まれている場合は、フォルダのタイトルの名前を変更するスクリプトを作成してください。フォルダ名は、「セクション」ではなく「章」という単語を使用して変更する必要があります。スクリプトは、すべてのサブディレクトリを解決して名前を変更するまで、各ディレクトリ、サブディレクトリ、およびサブサブディレクトリで実行する必要があります。
たとえば、
supersectiondir-->subsectiondir-->lowersubsectiondir
次のようにする必要があります。
superchapterdir-->subchapterdir-->lowersubchapterdir
私の試み(上記のsupersectiondirディレクトリから):
find /c/Users/cmd2/supersection -type d -exec sed -i 's/section/chapter/g' {} \;
$ sh renaming.sh
sed: couldn't edit /c/Users/cmd2/supersection: not a regular file
sed: couldn't edit /c/Users/cmd2/supersection/subsection: not a regular file
sed: couldn't edit /c/Users/cmd2/supersection/subsection/lowersubsection: not a regular file
答え1
このrename
ツールは移植性が非常に低いです。 RHEL/CentOS/Fedora ファミリのバージョンは、rename
Ubuntu または Debian のバージョンと共通点はほとんどありません。
私は書いた答えは2つのバージョンの使用例を提供します。rename
すぐに戻ってください。
どのOSを使っているのかは明らかにしなかったので、具体的に言うのは難しいです。これは宿題だから宿題は自分でやるべきだだから、どのオペレーティングシステムを言っても答えることはできません。
しかし、いくつかのヒントがあります。
sed
実行対象コンテンツの一つテキストファイル;ファイル名は変更されず、ディレクトリ名も変更されません。この目的には使用できないため、作成したコマンドでエラーが発生します。- あなたの命令は正しい方向に進んでいます
find
。 -name
役に立つ可能性があるので、-iname
演算子を見つけることをお勧めしますfind
(与えられたパターンと一致しないファイルの名前を変更しようとする必要はありません)。-exec
(rename
お使いのOSに適したバージョン)を使用するのはおそらく最も簡単で最善の解決策です。
答え2
このツールを使用できますrename
。このユースケースの例は次のとおりです。
rename section chapter *
あるいは、あなたの場合はfindの出力をパイプすることもできます。
find . -type d -print | xargs rename section chapter