Pythontr

husonet | Tarih: 17.04.2024

mkdir ve cp içinde --parents flag kullanımı

mkdir ve cp komutlarının --parents argumanı ile kullanımı

Bazen uzunca bir klasör iç içe tek bir satırda oluşturmak isteriz. Örneğin /home/husonet/status/2015/ocak


İlk denemenizde aşağıdaki gibi bir hata alabilirsiniz.
mkdir /home/husonet/status/2015/ocak
mkdir: cannot create directory `/home/husonet/status/2015/ocak':
No such file or directory

Sorun arada bulunan klasörlerin var olmamasından kaynaklanıyor. "status" ve "2015" klasörleri mevcut değildir.


Aşağıdaki şekilde aslında işlemimizi yapabiliriz ama sanki biraz kulağımızı tersten tutacağız sanki.


cd /home/husonet
mkdir status
cd status
mkdir 2015
cd 2015
mkdir ocak

Ne kadar çok iş yaptık dimi?


Yukarıda yaptığımız işi çok basit bir şekilde halledebilirdik işte burada -p "--parent" flagı devreye giriyor aşağıdaki örneğimizi inceleyelim.


mkdir --parents /home/husonet/status/2015/ocak

--parents seçeceği gerekli olursa arada bulunan klasörleri oluşturacaktır.
mkdir komutu için --parents seçeneğinin kısaltılması -p seçeneğini kullanabilirsiniz.
mkdir -p /home/husonet/status/2015/subat

ls -R komut disizini kullanarak alt dizinlerle birlikte açılan klasörleri görebilirsiniz.


cd /home/husonet; ls -R status
status:
2015

status/2015:
ocak subat

status/2015/ocak:

status/2015/subat:

Şimdi /home/husonet/status/2015/ocak klasörümüzün içine bir dosya oluşturalım.


touch /home/peter/status/2015/ocak/ock12.txt

Yukarıdaki komut dizisi ock12.txt adında boş bir dosya oluşturur. Sonrasında ise ock12.txt dosyamızı kopyalayalım.


cd /home/husonet
cp --parents status/2015/ocak/ock12.txt /home/husonet/tmp

işte bu kısımda status/2015/ocak/ock12.txt dosyası tmp klasörüne kopyalanacaktır --parents komutu tmp kalsörü içerisine "status", "2015" ve "ocak" klasörlerini oluşturacaktır.


İşlemi yaptıysak hemen bakalım


cd /home/husonet/tmp/
ls -R status
status:
2015

status/2015:
ocak

status/2015/ocak:
ock12.txt

cp --parents ve cp -r den farkı nedir?
cd /home/husonet
cp -r status /home/husonet/tmp

Görüldüğü üzere özyinelemeli kopyalama (Aralık dizinin içeriği dahil) durumu altında her şeyi kopyalamış.


ls -R /home/husonet/tmp/status
/home/husonet/tmp/status:
2015

/home/husonet/tmp/status/2015:
ocak subat

/home/husonet/tmp/status/2015/ocak:
ock12.txt

/home/husonet/tmp/status/2015/subat: