SORU
25 Ocak 2011, Salı


Özyinelemeli olarak yeniden adlandırın dosyaları bulmak ve sed kullanarak

Dizinleri bir sürü geçmesi ve _test ile biten tüm dosyaları yeniden adlandırmak istiyorum.rb _spec sonuna kadar.rb yerine. Hiç bir çaba çivilenmiş almak için koymak istedim bu sefer o kadar bash ile nasıl çözdüm bir şey. Şimdiye kadar, tüm çabalarıma rağmen artık gücüm yetmiyor:

find spec -name "*_test.rb" -exec echo mv {} `echo {} | sed s/test/spec/` \;

NOT: komut deniyorum ederken yerine basılı çalıştırmak için exec sonra ekstra bir yankı var.

Bunu çalıştırdığımda her eşleşen dosya için çıktı

mv original original

yani sed tarafından ikame kayboldu. Bu işin sırrı ne?

CEVAP
29 Temmuz 2012, Pazar


Bir şekilde en özgün sorun muhtemelen xargs "komut satırı" seçenek: . başına argümanlar kullanarak olurdu çözmek için

find . -name *_test.rb | sed -e "p;s/test/spec/" | xargs -n2 mv

Bulduğu dosya geçerli çalışma dizini özyinelemeli olarak, yankıları orijinal dosya adı (p) ve daha sonra değiştirilmiş adı (s/test/spec/) ve yemler tüm mv çift (xargs -n2). Bu durumda bir dize içerir kendisi olmamalı yolu 10* *dikkat edin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Central

    Android Cent

    13 Kasım 2008
  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006