A dizinden B dizine bir dizi dosya kopyalamak istiyorum, A dizindeki bir dosyanın B dizindeki bir dosya ile aynı olması durumunda, o dosyanın kopyalanmamasını ihmal etmeliyim (ve bu nedenle değişiklik zamanı olmamalıdır) güncellenmiş). Bunu yapmak için kendi komut dosyasını yazmadan, mevcut araçlarla bunu yapmanın bir yolu var mı?
Kullanım durumumdan biraz bahsetmek için: .c
Geçici bir dizinde (hepsini koşulsuz olarak üretmek zorunda olan bir yöntemle) bir grup dosyayı otomatik olarak oluşturuyorum ve bunları yeniden oluştururken yalnızca kopyalamak istiyorum Asıl kaynak dizine giren, değişmeyenleri dokunmadan bırakanlar (eski oluşturma zamanlarıyla) böylece make
yeniden derlemeye gerek duymayacaklarını bileceklerdir. (Oluşturulan dosyaların tümü .c
dosya değildir, bu yüzden metin karşılaştırmaları yerine ikili karşılaştırmalar yapmam gerekir.)
(Not olarak: Bu , denediğim https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762 adresinde sorduğum sorudan çıktı. komut dosyasını hızlandırmak için bu işlemi yapmak için kullanıyordum, ancak bana şunu yazmalıyım ki, bunu yapmanın daha iyi bir yolu olup olmadığına bakmalıyım - özellikle bunu kabuğun içinde yapmanın basit bir yolu olduğundan komut dosyası cmp
, her dosya çiftine benzer bir şey çağırır ve tüm bu işlemlerin başlatılması çok uzun sürer.
rsync -avnc
ya da uzun yoldan kullanın rsync --archive --verbose --dry-run --checksum
.
diff -qr dirA dirB
Hangi dosyaların benzersizdirA
vedirB
sırayla olduğunu görmek için kullanabilirsiniz .