TL, DR:
rsync -am --include='*.pdf' --include='*/' --exclude='*' ~/LaTeX/ ~/Output/
Rsync kaynakları hedeflere kopyalar. Kaynak *.pdfolarak iletirseniz, kabuk bunu .pdfgeçerli dizinde bulunan dosya listesine genişletir . Hiçbir özyinelemeli geçiş olmaz, çünkü herhangi bir dizini kaynak olarak geçmediniz.
Bu yüzden çalıştırmanız gerekir rsync -a ~/LaTeX/ ~/Output/, ancak rsync'e .pdfyalnızca dosyaları kopyalamasını bildiren bir filtre ile . Kılavuzu okuduğunuzda Rsync'in filtre kuralları göz korkutucu görünebilir, ancak yalnızca birkaç basit kuralla birçok örnek oluşturabilirsiniz.
Kapsama alınan terimler ve dışlamalar:
- Ada veya konuma göre dosyaları hariç kolaydır:
--exclude=*~, --exclude=/some/relative/location(örneğin bu hariç tutar kaynak argüman göreli ~/LaTeX/some/relative/location).
- Yalnızca birkaç dosya veya konumla eşleşmek istiyorsanız, onları dahil edin, bunlara yol açan her dizini (örneğin ile
--include=*/) dahil edin, sonra diğerlerini hariç tutun --exclude='*'. Bunun nedeni ise:
- Bir dizini hariç tutarsanız, bu altındaki her şeyi hariç tutar. Dışlanan dosyalar hiç dikkate alınmayacak.
- Bir dizin eklerseniz, bu otomatik olarak içeriğini içermez. Son sürümlerde,
--include='directory/***'bunu yapacak.
- Her dosya için ilk eşleme kuralı uygulanır (ve hiçbir zaman eşleşmeyen herhangi bir şey dahil edilir).
desenler:
- Bir model a içermiyorsa
/, sans dizini dosya adına uygulanır.
- Bir model ile sona ererse
/, yalnızca dizinlere uygulanır.
- Bir model ile başlarsa
/, argüman olarak geçirilen dizindeki tüm yola uygulanır rsync.
*tek bir dizin bileşeninin herhangi bir alt dizini (yani hiçbir zaman eşleşmez /); **herhangi bir yol alt dizgisiyle eşleşir.
Bir kaynak bağımsız değişkeni bir ile sona ererse /, içeriği kopyalanır ( rsync -r a/ byaratır b/fooher için a/foo). Aksi takdirde dizinin kendisi kopyalanır ( rsync -r a byaratır b/a).
Bu yüzden burada *.pdf, bunları içeren dizinleri dahil etmemiz ve her şeyi hariç tutmamız gerekir .
rsync -a --include='*.pdf' --include='*/' --exclude='*' ~/LaTeX/ ~/Output/
Bunun, tüm dizinleri, bunlarla eşleşen dosya veya alt dizin içermeyenleri bile kopyaladığını unutmayın. Bu seçenekle bu durumdan kaçınılabilir --prune-empty-dirs(evrensel bir çözüm değildir, çünkü o zaman açıkça eşleştirerek bile bir dizini kopyalayamazsınız, ancak bu nadir bir gerekliliktir).
rsync -am --include='*.pdf' --include='*/' --exclude='*' ~/LaTeX/ ~/Output/
**desenini kullanarak ) işe yaramalı .