2013-04-02 22 views
6

Dizindeki tüm dosyaları bir alt dizindeki bir yedek klasöre yedeklemek için bir bash komut dosyasında cp ./* "backup_$timestamp" komutunu kullanıyorum. Bu iyi çalışır, ama senaryo çıkışının uyarı mesajları tutar:cp: sessizlik "atlatma dizini" uyarısı

cp: omitting directory `./backup_1364935268' 

nasıl hakkında bilmek isteyebileceğiniz diğer uyarılar susturmak olmadan sus cp anlatır?

cevap

2

Muhtemelen bu komut dosyasında cp -r kullanmak istiyorsunuz. Bu, dizinler de dahil olmak üzere, kaynağı yinelemeli olarak kopyalayacaktır. Dizinler kopyalanacak ve mesajlar kaybolacak. -v grep 2>&1

  • boru çıkışı kullanarak stdout

    • yönlendirme stderr'yi: Eğer dizinleri kopyalamak istemiyorsanız


      aşağıdakileri yapabilirsiniz Grep man sayfasından alıntı:

      grep man sayfadan alıntı:

      -v, --invert-match 
            Invert the sense of matching, to select non-matching lines. 
      
  • +1

    Eh, bu işe yarar. Böyle uyarı mesajlarını susturmak için cp'de bir çeşit seçenek olacağını umuyordum ama sanırım değil. – Ajedi32

    +0

    Tüm dosyaların ve direcotories öğelerinin özyinelemesine ihtiyacınız var mı? Ya da sadece 'backup_ $ timestamp'ın ilk seviyesindeki dosyalar? – hek2mgl

    +0

    Hayır, çünkü her yedeklemede yaptığım zaman, eski dosyalar ile birlikte diğer tüm yedekleri yedeklerim. Yardım ettiğin için teşekkür ederim. – Ajedi32

    7

    benim için çalışan bir çözüm şudur: dizinlere değişiklik yapmaz, geçerli dizinden dosyaları (bunlar bir nokta ile başlayan dahil)

    find -maxdepth 1 -type f -exec cp {} backup_1364935268/ \; 
    

    kopyalar bütün ve bu konuda şikayet etmez.

    +0

    Artı bir: Makefile'de çalışıyor. – ace

    +0

    Not: BSD bul (örn. Mac) kullanırken ilk parametre olarak bir hedefe ihtiyacınız vardır, yani: 'find. -maxdepth 1 -type f -exec cp {} backup_1364935268/\; ' – jjj