28Jun

Linux'ta Bir Komut İle Bir Dosyayı Birden Çok Dizine Kopyalama

Bir dosyayı Linux komut satırı ile kopyalamak kolaydır. Ancak, aynı dosyayı farklı yerlere kopyalamak isterseniz ne olur? Bu da kolay, ve sana bir komutla nasıl yapılacağını göstereceğiz.

Normalde, bir dosyayı kopyalamak için, kaynak dosyaya ve hedef dizine bağlanan cp komutunu kullanırsınız:

cp ~ /Documents/ FileToBeCopied.txt ~ /TextFiles/

Bunu iki dizine daha kopyalamak için, birçok kişi sadece komutu iki çalıştırırdaha fazla kez, farklı hedeflerle:

cp ~ /Documents/ FileToBeCopied.txt ~ /Dropbox/ cp ~ /Documents/ FileToBeCopied.txt /media/lori/MYUSBDRIVE/

Ancak, aynı işlemi bir komutla yapabilirsiniz:

echo dir1 dir2 dir3 |xargs -n 1 cp dosyası1

İşte bu komutun işleyişi. Yankı komutu normalde ekrana yazar. Bununla birlikte, bu durumda, echo komutunun çıktısını xargs komutuna girdi olarak beslemek istiyoruz. Bunu yapmak için, bir komuttan çıktıyı başka bir girdi olarak besleyen boru simgesi( |) kullanırız. Xargs komutu cp komutunu her seferinde echo komutundan cp komutunun sonuna dizilen bir sonraki dizin yolunu ekleyerek üç kez çalıştırır. Xargs'a aktarılan üç bağımsız değişken vardır, ancak xargs komutundaki -n 1 seçeneği yalnızca bir defada bu bağımsız değişkenlerden birini cp komutuna her çalıştırıldığında eklemesini söyler.

Yani, daha önceki örnekle sadık kalmak için, yukarıdaki üç ayrı cp komutu şu şekilde bir komuta birleştirilebilir:

echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp ~ /Documents/ FileToBeCopied.txt

Belirtilen herhangi bir hedef dizinde kopyalanacak dosya varsa, o hedefdeki dosya otomatik olarak değiştirilir. Dosyayı değiştirmek isteyip istemediğiniz sorulmaz.(Normal olarak, bir dosyayı tek bir konuma kopyalamak için cp komutunu kullandığınızda, varolan bir dosyayı değiştirmek isteyip istemediğinizi soracak -i seçeneğini ekleyebilirsiniz. Ancak, -i seçeneği etkileşimli bir seçenektircp komutu ile kullanıcıdan girdi istemek için) ve xargs ile birlikte kullanıldığında cp komutuyla etkileşimli bir seçenek kullanamazsınız.

Dikkate değer bir diğer husus, çok büyük bir dosyayı kopyalamak isenizyukarıdaki tek komutta cp komutuna no-clobber( -n) seçeneğini eklemek istiyoruz. Bu seçenek, bir dosyanın orada zaten mevcut olması durumunda bir dosyanın üzerine otomatik olarak üzerine yazılmasını önler. Bir ağ üzerinden çok büyük bir dosya kopyalıyorsanız, yavaş olabilir ve dosyayı kopyalamak ve değiştirmek için gereken kaynakları kullanmamak isteyebilirsiniz. Aşağıdaki komut, -n seçeneğini ekler ve dosya, o hedefte zaten varsa, dosyayı eko ifadesinin bağımsız değişkenlerinde listelenen herhangi bir hedefe kopyalamaz.

yankısı ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp -n ~ /Documents/ FileToBeCopied.txt

Bu komutlardan herhangi biri hakkında daha fazla bilgi için Linux'daki komut satırında man echo, man xargs veya man cp yazın.