2013-08-02 11 views
12

名前に一致するベースディレクトリの下のすべてのディレクトリの名前を変更したいと思います。たとえば:パターンに一致する複数のディレクトリの名前を変更してください

- foo/bar/blah 
- my/bar/foo 
- some/bar/foo1 
- other/foo/bar 

私はbarに一致するすべてのディレクトリの名前を変更したいと思いますが、私は、プレフィックス部分を維持したいと思います:

basedir/で、私が持っています。 find

は、私は簡単にこのようなすべてのディレクトリのリストを作ることができます。

しかし
find . -name repositoryunit -type d 

、私は接頭辞が保存されるよう-exec mv {} ...(またはおそらく他のアプリとの組み合わせ)を使用することができますか?

事前に感謝します。

答えて

21
find . -name bar -type d -execdir mv {} baz \; 

-execdirコマンドを実行する前に、親にディレクトリを変更しますので、ここでmvは、それぞれの親ディレクトリにローカルになります。

+0

検索されたディレクトリが既にディレクトリ "baz"である場合、 "bar"がそのディレクトリに移動されることに注意してください。 – mkudlacek

+1

'find: '*****':...このようなファイルやディレクトリは'コマンドを実行した後、エラーを取り除くディレクトリ自体の前にディレクトリの内容を処理する '-depth'を追加します。 – lepe

関連する問題