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

  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006