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

  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • superemposed

    superemposed

    25 Aralık 2007
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011