Как при помощи одной команды собрать все файлы с вложенных папок в одном месте

В процессе работы за компом у юзеров накапливаются огромные объемы файлов и папок, образующих сложную вложенную иерархию. Почти все обожают раскладывать все страсть полочкам, создавая директории и вложенные поддиректории, но в один прекрасный момент может появиться необходимость устранить эту сложную структуру. В среде OS X это резвее всего можно создать при помощи командной строчки.

Обстоятельств у такового деяния быть может довольно много. Может быть, для вас нужно собрать файлы с всех вложенных папок в единую директорию, да может быть настало время отменить от излишних директорий. Так либо по другому, рассматриваемый нами способ поможет переместить все вложенные файлы в одну папку.

Для наглядности мы сделали пример таковой структуры. Общая папка именуется TestDirectory. Она в свою очередь содержит вложенные папки с наименованиями SubDirectory1, SubDirectory2 и SubDirectory3. Любая поддиректория содержит список вложенных файлов. Наша задачка – переместить все файлы в корневую папку 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

Для воплощения нашей задачки нужно в Терминале употреблять команду:

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 повторяется в ней два раза и не постоянно он является одним и этим же. 1-ое упоминание директории – это тот каталог, который содержит вложенные файлы и папки. 2-ое – это то пространство, куда будут перемещены все обнаруженные файлы. Потому не постоянно корневая папка будет тем местом, куда будут сложены файлы.

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

Серверные решения
Добавить комментарий