Ratakan Direktori Bersarang & Hirarki Berkas dari Baris Perintah Mac OS X

Pernahkah Anda perlu meratakan struktur direktori, memindahkan semua isi file dari direktori folder anak ke dalam satu folder? Meskipun Anda dapat melakukannya secara manual dengan memindahkan file dan folder dari sistem file Mac OS X atau Linux, opsi yang lebih cepat adalah dengan beralih ke baris perintah. Mungkin pada satu titik Anda membuat hierarki direktori bertingkat yang sekarang perlu Anda batalkan dengan memindahkan semua file dari folder yang disarangkan itu dan kembali ke satu direktori, atau mungkin Anda ingin menyederhanakan struktur direktori, apa pun alasannya, ini Trik bekerja dengan baik.


Menggunakan baris perintah untuk mencapai perataan file dan struktur direktori jelas paling baik disediakan untuk pengguna tingkat lanjut yang merasa nyaman dengan menggunakan terminal secara umum, jika itu tidak menggambarkan Anda, pertimbangkan melakukannya secara manual melalui Finder, atau menggunakan aplikasi Mac Automator untuk mencapai otomatisasi yang sama dari aktivitas sistem file. Kami berfokus pada penyambungan direktori dari baris perintah di sini.

Contoh Meratakan Direktori File Bersarang

Untuk lebih memahami apa yang ingin kami capai, mari kita ambil contoh struktur direktori imajiner yang disebut TestDirectory yang terletak di folder Home pengguna. Dalam contoh ini, TestDirectory berisi subfolder seperti SubDirectory1, SubDirectory2, SubDirectory3, dll, masing-masing dengan file di folder yang bersangkutan. Apa yang kami cari lakukan di sini adalah meratakan struktur direktori, memindahkan semua file dari SubDirectory (X) ke direktori induk "TestDirectory". Direktori awal dan konten yang ditampilkan secara rekursif dengan dapat terlihat seperti ini:

$ 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

Untuk meratakan direktori ini dan isi subdirektori kembali ke folder TestDirectory, Anda akan menggunakan string perintah berikut:

find TargetDirectory/ -mindepth 2 -type f -exec mv -i '{}' TargetDirectory/ ';'

Setelah isi direktori diratakan, seharusnya terlihat seperti ini ketika dicantumkan:

~/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

Perhatikan subdirektori masih ada, mereka akan kosong. Masuk akal? Jika tidak, atau jika itu tidak menunjukkan apa yang ingin Anda capai, Anda mungkin tidak ingin meratakan direktori sama sekali, mungkin Anda ingin menggabungkan atau menggunakan idem untuk melakukan salinan rumit ke tempat lain.

Meratakan Struktur Direktori & Hierarki File Bersarang dengan Command Line

Siap melanjutkan? String perintah yang akan kita gunakan untuk meratakan struktur direktori dan memindahkan semua file dari subdirektori ke basis direktori target adalah sebagai berikut:

find [DIRECTORY] -mindepth 2 -type f -exec mv -i '{}' [DIRECTORY] ';'

Ganti [DIRECTORY] dengan direktori pilihan Anda untuk meratakan, seperti yang ditunjukkan pada contoh di atas.

Ya, direktori muncul dua kali dalam string perintah, pertama kali adalah direktori yang dicari untuk meratakan subdirektori dari, dan yang kedua kalinya sebagai tujuan untuk item yang ditemukan.

Tepatkan dengan tujuan yang ditentukan, karena ini tidak dapat dibatalkan (baik, setidaknya tanpa banyak pekerjaan manual di pihak Anda), jadi hanya lakukan ini jika Anda benar-benar yakin Anda ingin memindahkan semua file dalam direktori target anak direktori kembali ke folder root target.

Seperti yang disebutkan sebelumnya, Anda juga dapat melakukan ini di Finder OS X, atau setidaknya mengamati perubahan file dan folder di Finder. Opsi + mengklik panah kecil di tampilan Daftar membuka semua subdirektori, menunjukkan hierarki folder seperti ini:

Setelah mengotak-atik berbagai alternatif bash dan zsh, trik praktis ini ditinggalkan oleh komentator di StackExcange dan akhirnya menjadi metode yang paling mudah dan paling kompatibel. Jika Anda tahu cara yang lebih baik untuk meratakan direktori bertingkat, beri tahu kami di komentar!