Meratakan Direktori Bersarang & Hierarki File dari Baris Perintah Mac OS X

Anonim

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

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

Contoh Meratakan Direktori Berkas Bersarang

Untuk lebih memahami apa yang ingin kami capai, mari kita ambil contoh struktur direktori imajiner yang disebut TestDirectory yang terletak di folder Beranda pengguna. Dalam contoh ini, TestDirectory berisi subfolder seperti SubDirectory1, SubDirectory2, SubDirectory3, dll, masing-masing dengan file di folder tersebut. Apa yang ingin kami 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 dapat terlihat seperti ini:

temukan ~/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 isi direktori dan subdirektori ini kembali ke folder TestDirectory, Anda akan menggunakan string perintah berikut:

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

Setelah konten direktori diratakan, seharusnya terlihat seperti ini saat 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 bahwa subdirektori akan tetap ada, hanya 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 ditto untuk menyalin kompleks ke tempat lain.

Meratakan Struktur Direktori & Hierarki Berkas Bersarang dengan Baris Perintah

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

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

Ganti dengan direktori pilihan Anda untuk diratakan, seperti yang ditunjukkan pada contoh di atas.

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

Tepat dengan tujuan yang ditentukan, karena ini tidak dapat dibatalkan (yah, setidaknya tanpa banyak pekerjaan manual di pihak Anda), jadi lakukan ini hanya jika Anda benar-benar yakin ingin pindah semua file di direktori target direktori anak 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. Option+mengeklik panah kecil di tampilan Daftar akan membuka semua subdirektori, menampilkan hierarki folder seperti ini:

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

Meratakan Direktori Bersarang & Hierarki File dari Baris Perintah Mac OS X