Belge

Linux’ta Dosyaları Almadan Dizin Yapısı Nasıl Kopyalanır

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.