2016-03-28 9 views
0

Tüm Fortran dosyalarını bir dizinde bulmaya çalışıyorum ve bu dosyadaki bazı metni değiştirin.Bir dizindeki tüm Fortran dosyalarını bulmak için Bash komutu

İlk başta, fortran kodu için gerekli tüm dosya uzantılarını bulmak ve değişikliklerde bulunmak üzere find -regex ... -exec numaralı telefonu kullanmayı düşünüyordum. Ancak, birçok dosya uzantısı var, Fortran dosyalarını tanımlamanın başka bir yolu var mı?

+0

Fortran dosyaları için neden birçok uzantı var? – Barmar

+2

@Barmar İki kaynak şekli olduğundan ve F harfi ön işlemenin gerekliliğini gösterir. Çünkü insanlar, standartların farklı versiyonlarını ayırt etmeyi düşündükleri için (“.f95”, “.f03” gibi saçmalık), bu aptalcadır. Sanki .java1 '.java2' ...' .java7' gibi olsaydı. –

cevap

2

Tüm Fortran ilgili dosyaları bulmak için çok kısa bir bulma komutu İşte. En yaygın Fortran dosyaları, *.f, *.f90 ve büyük harf muadilleridir. Ek olarak, .f95, .f03, .f08 ve hatta .for kullanılır. -iregex numaralı ifadenin normal ifade durumuyla uyumlu olmadığını unutmayın (-regex'un aksine).

find . -iregex ".*\.F[0-9]*" -o -iregex ".*\.for" 

bu bir şeyler yapmak için, xargs kullanabilirsiniz:

find . -iregex ".*\.F[0-9]*" -o -iregex ".*\.for" | xargs head -1 

Eğer dosyaları ile yapmak istediğini ile head -1 değiştirin. Bu, xargs yaklaşımı biraz daha esneklik sağlar ve daha kolay okunmasını

for file in $(find . -iregex ".*\.F[0-9]*" -o -iregex ".*\.for"); do 
    head -1 "$file" 
done 

:


o çalışmak için bir başka yolu

gibi bir döngü kullanıyor.

+0

Çıktı çok basit değilse (beyaz boşluk, özel karakter yok) ya da açık bir şekilde kelime bölme işlemi yapmak istemiyorsanız, genellikle '' ... 'için $' ı (komut) 'da kullanmamalısınız. Bazı alternatifler için http://stackoverflow.com/a/7039579/3076724 adresine bakın (birkaç yerde 'IFS = 'eksik) – BroSlow

İlgili konular