Belirli dosyaların kopyalanmasını engellemek için cp komutu


35

Bir dizini kopyalamak ve içindeki belirli dosyaları / alt dizinleri dışlamak için 'cp' komutunu kullanmanın bir yolu var mı?

Yanıtlar:


57

Kullanım rsync:

rsync -avr --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination

Kullanmanın sourceve source/farklı olduğuna dikkat edin . Bir sondaki klasörünün içeriğini kopyalamak için aracı çizgi sourceiçine destination. Sondaki eğik çizgi olmadan, klasör kaynağını içine kopyalamak anlamına gelir destination.

Hariç tutmak dizinleri (veya dosya) bir sürü varsa Alternatif olarak, kullanabilirsiniz --exclude-from=FILEnerede, FILEdosya veya dışlamak için dizinleri içeren bir dosyanın adıdır.

--exclude ayrıca, örneğin --exclude=*/.svn*

Kopyalanan Kaynak: https://stackoverflow.com/a/2194500/749232

cpKendisini kullanmak istiyorsan :

find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'

Bu, hedef dizin yapısının kaynağınkiyle aynı olduğunu varsayar.

Kopyalanan Kaynak: https://stackoverflow.com/a/4586025/749232


3

Oyunun sonlarına gelindiğinde, ancak burada sade bash ve cp kullanarak çok farklı bir çözüm var: Bazı dosyaları yoksayırken genel bir dosya belirtimi kullanabilirsiniz.

Dizinin dosyaları içerdiğini varsayalım:

$ ls *
listed1  listed2  listed3  listed4  unlisted1  unlisted2  unlisted3

GLOBIGNORE değişkenini kullanarak :

$ export GLOBIGNORE='unlisted*'
$ ls *
listed1  listed2  listed3  listed4

Veya daha spesifik istisnalar hariç:

$ export GLOBIGNORE='unlisted1:unlisted2'
$ ls *
listed1  listed2  listed3  listed4  unlisted3

Veya negatif eşleşmeleri kullanarak :

$ ls !(unlisted*)
listed1  listed2  listed3  listed4

Bu aynı zamanda birkaç eşsiz deseni destekler:

$ ls !(unlisted1|unlisted2)
listed1  listed2  listed3  listed4  unlisted3

1
Negatif eşleşmelerde genişletilmiş globların etkinleştirilmesi gerekir: shopt -s extglobayrıca dışa aktarmanıza gerek yoktur GLOBIGNORE: mevcut kabuğun davranışını değiştirmesi gerekir, çoğu alt program bunu umursamaz.
muru
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.