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

  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011