2013-08-02 22 views
12

Bir dizeyle eşleşen tüm dizinleri adla eşleştirmek istiyorum. Örneğin:Eşleşen birden fazla dizini yeniden adlandırma

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

Ben bar eşleşen tüm dizinleri yeniden adlandırmak istiyorum ama önek kısmını korumak istiyoruz:

basedir/, ben var. find ile

, kolayca bu gibi tüm dizinleri bir listesini yapabilirsiniz:

Ancak
find . -name repositoryunit -type d 

, ben önek korunur, böylece -exec mv {} ... (ya da belki başka bir uygulama ile birleştirmek) nasıl kullanabileceğinizi?

Şimdiden çok teşekkürler! Burada mv her üst dizine yerel olacak böylece

cevap

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

-execdir, komutu yürütmeden önce ebeveyne dizini değiştirir.

+0

Ayrıca, aranan dizinde bir "baz" dizini varsa, "bar" ın içine taşınacağını unutmayın. – mkudlacek

+1

Eğer 'find:' ***** ':: ... Komutu çalıştırdıktan sonra böyle bir dosya ya da dizin yok.' -dep 'ifadesini ekleyin. – lepe

İlgili konular