Сглаживание вложенных каталогов и файловой иерархии из командной строки Mac OS X

Терминал в OS X

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


Использование командной строки для выполнения сглаживания файлов и структур каталогов, очевидно, лучше всего зарезервировать для опытных пользователей, которым удобно пользоваться терминалом в целом, если это вас не описывает, рассмотрите возможность выполнения этого вручную через Finder или с помощью приложения Mac Automator для выполнить аналогичную автоматизацию действий файловой системы. Однако здесь мы сосредоточены на выравнивании каталогов из командной строки.

Пример выравнивания вложенного каталога файлов

Чтобы лучше понять, чего мы пытаемся достичь, давайте рассмотрим пример воображаемой структуры каталогов под названием TestDirectory, расположенной в домашней папке пользователя. В этом примере TestDirectory содержит подпапки, такие как SubDirectory1, SubDirectory2, SubDirectory3 и т. Д., Каждая с файлами в соответствующих папках. Что мы здесь хотим сделать, так это сгладить структуру каталогов, переместив все файлы из SubDirectory (X) в родительский каталог TestDirectory. Исходный каталог и содержимое, показанные рекурсивно с помощью, могут выглядеть примерно так:

$ 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

Чтобы выровнять содержимое этого каталога и подкаталога обратно в папку 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

Обратите внимание, что подкаталоги по-прежнему будут существовать, они просто будут пустыми. Есть смысл? Если нет или если это не демонстрирует, чего вы хотите достичь, вы, вероятно, вообще не хотите сглаживать каталог, возможно, вы хотите объединить или использовать то же самое, чтобы сделать сложную копию в другом месте.

Выравнивание структуры каталогов и иерархии вложенных файлов с помощью командной строки

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

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

Заменить [DIRECTORY] с каталогом по вашему выбору для сглаживания, как показано в примере выше.

Да, каталог появляется дважды в командной строке, первый раз — это каталог, в котором выполняется поиск для сглаживания подкаталогов, а второй раз — как место назначения для найденных элементов.

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

Как упоминалось ранее, вы также можете сделать это в Finder OS X или, по крайней мере, наблюдать за изменениями файлов и папок в Finder. Option + нажатие на маленькие стрелки в представлении списка открывает все подкаталоги, показывая иерархию папок следующим образом:

Структура вложенных каталогов для сглаживания, как показано в Finder в Mac OS X

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.