Dizinler (alt dizinler) ve dosyalar içeren bir dizini kopyalamak istendiğinde, cp komutunu-R
( özyinelemeli ) parametresi ile çalıştırmak istenen işlemi etkili bir şekilde gerçekleştirebilir.
$ cp -R path/to/source/directory path/to/destination/directory
Bununla birlikte, bazı senaryolarda, kişisel projeleriniz veya bir dosya depolama sistemi için zaten var olan belirli bir dizin yapısını taklit etmek isteyebilirsiniz çünkü bu dizin yapısı gayet uygundur ve onu tamamen sıfırdan yeniden oluşturmak çok zaman gerektirebilir. .
Bu yazı, Linux’ta zaten doldurulmuş dizin yapısını, alt dizinleri ile birlikte içlerinde dosyaları olmadan, kopyalamak için bize yol gösterecektir.
Linux tree komutu ile aşağıdaki şekilde bir dizin yapısı olduğunu farzedelim .
$ tree -a dir1
Tree komutu çıktısına göre , kök dizin ( dir1 ) üç alt dizine ve toplam 10 dosyaya sahiptir. Amacımız, mevcut 10 dosya olmadan bu dizin yapısını yeni bir hedefe kopyalamak olacaktır.
1. Ağaç ve xargs Komutlarını Kullanarak Linux Dizin Yapısını Kopyalayın
Bir dizinin içeriğini listelerken tree komutunun ağaç benzeri bir formatı taklit ettiğini zaten biliyoruz . Öte yandan, xargs komutu, komut satırlarını oluşturmak ve yürütmek için sistem kullanıcısından standart girdi veya önceki komuta ait çıktıyı alır.
Bu iki komutun birleştirilmesiyle ilgili eylemler aşağıdaki gibidir:
- Mevcut bir dizin yapısından tüm dizin yapısını alır.
- Girdi olarak alınan dizin yollarını yeniden yönlendirir ve kullanır.
- Alınan dizin yollarını yeni bir dizin yolunda yeniden oluşturmak için mkdir -p komutunu kullanır.
Linux Dizin Yollarını Alma
tree komutunun, mevcut bir dizin yapısının ağaç benzeri bir biçimini oluşturmadaki etkinliğini zaten kabul etmiştik. Ancak, tree komutunun, dizin dosyalarını detaylandırmadan dizin yollarını çıktılamasını sağlamak için bazı komut seçenekleri ekleyebiliriz.
$ tree -dfi --noreport dir1
Son komut uygulamamız aşağıdaki gibi görünecektir:
$ tree -dfi --noreport dir1 | xargs -I{} mkdir -p "$HOME/Downloads/{}"
Şimdi dizin yapısının dosyalar olmadan kopyalanıp kopyalanmadığını doğrulamak için tree komutunu tekrar kullanalım :
$ tree -a $HOME/Downloads/dir1
2. Find ve xargs Komutlarını Kullanarak Linux Dizin Yapısını Kopyalayın
Tıpkı tree komutunda olduğu gibi , hedeflenen dizin yapımızdaki tam dizin yollarını almak için find komutunu kullanabiliriz.
$ find dir1 -type d
-type d seçeneği, yalnızca dizinleri almak için find komutunu çalıştırır.
Yukarıdaki komut daha sonra, dosyalar olmadan dizin yapısını oluşturmak için hedefle (örneğin $HOME/Documents) bir xargs komutuna iletilebilir.
$ xargs -I{} mkdir -p "$HOME/Documents/{}"
Son komutumuz aşağıdaki gibi olacaktır.
$ find dir1 -type d | xargs -I{} mkdir -p "$HOME/Documents/{}"
Dizin yapısının oluşturulmasını doğrulayalım:
$ tree -a $HOME/Documents/dir1
Alternatif olarak, find komutunu -exec argümanıyla birleştirmek aynı sonuçları verir:
$ find dir1 -type d -exec mkdir -p "$HOME/Desktop/{}" \;
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.