Изравняване на вложена директория & файлова йерархия от командния ред на Mac OS X

Anonim

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

Използването на командния ред за постигане на изравняване на файлове и структури на директории очевидно е най-добре запазено за напреднали потребители, които са удобни с използването на терминал като цяло, ако това не ви описва, помислете дали да не го направите ръчно чрез Finder , или използване на приложението Mac Automator за извършване на подобна автоматизация на дейности на файловата система. Тук обаче се фокусираме върху изравняването на директорията от командния ред.

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

За да разберем по-добре какво се опитваме да постигнем, нека вземем примерна структура на въображаема директория, наречена TestDirectory, намираща се в потребителска начална папка. В този пример 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