Зведення вкладеного каталогу & Ієрархія файлів із командного рядка Mac OS X

Anonim

Вам коли-небудь доводилося згладити структуру каталогів, перемістивши весь вміст файлу з дочірніх папок каталогів в одну папку? Хоча ви можете зробити це вручну, переміщуючи файли та папки з файлової системи Mac OS X або Linux, швидшим варіантом є звернення до командного рядка. Можливо, в один момент ви створили вкладену ієрархію каталогів, яку тепер потрібно скасувати, перемістивши всі файли з цих вкладених папок назад до одного каталогу, або, можливо, ви хочете спростити структуру каталогів, незалежно від причини, це трюк працює досить добре.

Використання командного рядка для виконання зведення файлів і структур каталогів, очевидно, найкраще зарезервовано для досвідчених користувачів, яким зручно користуватися терміналом загалом. Якщо це не стосується вас, спробуйте зробити це вручну через Finder , або за допомогою програми Mac Automator для виконання подібної автоматизації дій файлової системи. Однак тут ми зосереджуємося на зведенні каталогів із командного рядка.

Приклад зведення вкладеного каталогу файлів

Щоб краще зрозуміти, чого ми намагаємося досягти, давайте візьмемо приклад уявної структури каталогу під назвою TestDirectory, розташованої в папці Home користувача. У цьому прикладі TestDirectory містить вкладені папки, такі як SubDirectory1, SubDirectory2, SubDirectory3 тощо, кожна з яких містить файли у відповідних папках. Що ми хочемо зробити тут, це згладити структуру каталогів, перемістивши всі файли з SubDirectory(X) до батьківського каталогу «TestDirectory».Початковий каталог і вміст, показані рекурсивно за допомогою , можуть виглядати приблизно так:

$ знайти ~/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

Щоб вивести вміст цього каталогу та підкаталогу назад у папку TestDirectory, ви повинні використати такий командний рядок:

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

Після того, як вміст каталогу було зведено, у списку він має виглядати так:

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

Зверніть увагу, що підкаталоги все ще існуватимуть, вони просто будуть порожніми. Мати сенс? Якщо ні, або якщо це не демонструє, чого ви хочете досягти, ви, ймовірно, взагалі не хочете об’єднувати каталог, можливо, ви хочете об’єднати або використати ditto для створення складної копії в інше місце.

Зведення структури каталогу та вкладеної ієрархії файлів за допомогою командного рядка

Готові продовжити? Рядок команди, який ми будемо використовувати для зведення структури каталогів і переміщення всіх файлів із підкаталогів до основи цільового каталогу, виглядає наступним чином:

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

Замініть на обраний вами каталог для зведення, як показано в прикладі вище.

Так, каталог з’являється двічі в командному рядку, перший раз це каталог, у якому здійснюється пошук для об’єднання підкаталогів, а другий раз як місце призначення для знайдених елементів.

Будьте точними з указаним пунктом призначення, тому що це не можна відмінити (ну, принаймні, без великої ручної роботи з вашого боку), тому робіть це, лише якщо ви абсолютно впевнені, що хочете переміститися усі файли в дочірніх каталогах цільових каталогів повертаються до цільової кореневої папки.

Як згадувалося раніше, ви також можете зробити це у Finder OS X або принаймні спостерігати за змінами файлів і папок у Finder. Option+клацання маленьких стрілок у перегляді списку відкриває всі підкаталоги, показуючи ієрархію папок так:

Після роботи з різноманітними альтернативами bash і zsh коментатор на StackExcange залишив цей зручний трюк, і він виявився найпростішим і найбільш сумісним методом. Якщо ви знаєте кращий спосіб звести вкладений каталог, повідомте нам про це в коментарях!

Зведення вкладеного каталогу & Ієрархія файлів із командного рядка Mac OS X