Mac OS X'in Komut Satırından Yuvalanmış Bir Dizin & Dosya Hiyerarşisini Düzleştirin
Dizin alt klasörlerindeki tüm dosya içeriklerini tek bir klasöre taşıyarak bir dizin yapısını düzleştirmeniz hiç gerekti mi? Bunu, Mac OS X veya Linux'un dosya sisteminde dosya ve klasörler arasında dolaşarak manuel olarak yapabilseniz de, daha hızlı bir seçenek komut satırına dönmektir. Belki bir noktada, tüm dosyaları bu iç içe geçmiş klasörlerden tek bir dizine taşıyarak geri almanız gereken iç içe geçmiş bir dizin hiyerarşisi oluşturdunuz veya belki de nedeni ne olursa olsun bir dizin yapısını basitleştirmek istiyorsunuz. hile oldukça iyi çalışıyor.
Dosyaların ve dizin yapılarının düzleştirilmesini gerçekleştirmek için komut satırını kullanmak, açıkçası en iyi şekilde, genel olarak terminal kullanma konusunda rahat olan ileri düzey kullanıcılar için ayrılmıştır, eğer bu sizi tanımlamıyorsa, bunu Finder aracılığıyla manuel olarak yapmayı düşünün. veya dosya sistemi etkinliklerinin benzer otomasyonunu gerçekleştirmek için Mac Automator uygulamasını kullanma. Ancak burada komut satırından dizin düzleştirmeye odaklanıyoruz.
İç İçe Dosya Dizinini Düzleştirme Örneği
Neyi başarmaya çalıştığımızı daha iyi anlamak için, bir kullanıcının Ana Sayfa klasöründe bulunan TestDirectory adlı örnek bir hayali dizin yapısını ele alalım. Bu örnekte TestDirectory, her biri ilgili klasörlerde dosyalara sahip olan SubDirectory1, SubDirectory2, SubDirectory3 gibi alt klasörler içerir. Burada yapmak istediğimiz, tüm dosyaları SubDirectory(X)'ten "TestDirectory" üst dizinine taşıyarak dizin yapısını düzleştirmek.ile yinelemeli olarak gösterilen ilk dizin ve içerik şuna benzer:
$ find ~/TestDirectory/ -type f ~/TestDirectory/rooty.jpg ~/TestDirectory/SampleDirectory1/beta-tool-preview.jpg ~/TestDirectory/SampleDirectory1 /alphabeta-tool.jpg ~/TestDirectory/SampleDirectory2/test-tools.jpg ~/TestDirectory/SampleDirectory3/test-png.jpg ~/TestDirectory/SampleDirectory3/test1.jpg ~/TestDirectory/SampleDirectory3/test2.jpg
Bu dizini ve alt dizin içeriğini tekrar TestDirectory klasörüne düzleştirmek için aşağıdaki komut dizesini kullanırsınız:
TargetDirectory'i bul/ -minDefinition 2 -type f -exec mv -i '{}' TargetDirectory/ ';'
Dizin içeriği düzleştirildikten sonra, listelendiğinde şöyle görünmelidir:
~/TestDirectory/rooty.jpg ~/TestDirectory/beta-tool-preview.jpg ~/TestDirectory/alphabeta-tool.jpg ~/TestDirectory/test-tools .jpg ~/TestDirectory/test-png.jpg ~/TestDirectory/test1.jpg ~/TestDirectory/test2.jpg
Alt dizinlerin var olmaya devam edeceğini unutmayın, sadece boş olacaklar. Mantıklı olmak? Değilse veya bu, neyi başarmak istediğinizi göstermiyorsa, muhtemelen bir dizini düzleştirmek istemezsiniz, belki de başka bir yere karmaşık bir kopya yapmak için birleştirmek veya aynen kullanmak isteyebilirsiniz.
Bir Dizin Yapısını ve İç İçe Dosya Hiyerarşisini Komut Satırıyla Düzleştirme
Devam etmeye hazır mısınız? Bir dizin yapısını düzleştirmek ve tüm dosyaları alt dizinlerden hedef dizinin tabanına taşımak için kullanacağımız komut dizisi aşağıdaki gibidir:
find -minttling 2 -type f -exec mv -i '{}' ';'
Yukarıdaki örnekte gösterildiği gibi düzleştirmek için seçtiğiniz dizinle değiştirin.
Evet, dizin komut dizisinde iki kez görünür, ilk kez alt dizinlerini düzleştirmek için aranan dizindir ve ikinci kez bulunan öğeler için hedef olarak aranır.
Belirtilen varış yeri konusunda kesin olun, çünkü bu geri alınamaz (en azından sizin çok fazla el emeğiniz olmadan), bu yüzden bunu yalnızca yeniden yerleştirmek istediğinizden kesinlikle eminseniz yapın hedef dizinlerdeki alt dizinlerdeki tüm dosyalar hedef kök klasöre geri döner.
Daha önce de belirtildiği gibi, bunu OS X'in Finder'ında da yapabilir veya en azından Finder'da dosya ve klasör değişikliklerini gözlemleyebilirsiniz. Option+Liste görünümündeki küçük oklara tıklamak tüm alt dizinleri açarak klasör hiyerarşisini şu şekilde gösterir:
Çeşitli bash ve zsh alternatifleriyle uğraştıktan sonra, bu kullanışlı numara StackExcange'da bir yorumcu tarafından bırakıldı ve en kolay ve en uyumlu yöntem haline geldi. İç içe geçmiş bir dizini düzleştirmenin daha iyi bir yolunu biliyorsanız, yorumlarda bize bildirin!