Izlīdziniet ligzdoto direktoriju & failu hierarhiju no Mac OS X komandrindas
Vai jums kādreiz ir bijis nepieciešams saplacināt direktoriju struktūru, pārvietojot visu failu saturu no direktoriju bērnu mapēm vienā mapē? Lai gan to var izdarīt manuāli, pārvietojot failus un mapes no Mac OS X vai Linux failu sistēmas, ātrāka iespēja ir atvērt komandrindu. Varbūt kādā brīdī jūs izveidojāt ligzdotu direktoriju hierarhiju, kas tagad ir jāatsauc, pārvietojot visus failus no šīm ligzdotajām mapēm un atpakaļ vienā direktorijā, vai varbūt jūs vēlaties vienkāršot direktoriju struktūru neatkarīgi no iemesla. triks darbojas diezgan labi.
Komandrindas izmantošana failu un direktoriju struktūru saplacināšanai, protams, vislabāk ir paredzēta pieredzējušiem lietotājiem, kuri ir apmierināti ar termināļa lietošanu kopumā. Ja tas jums nav raksturīgs, apsveriet iespēju to izdarīt manuāli, izmantojot Finder. , vai izmantojot Mac Automator lietotni, lai veiktu līdzīgu failu sistēmas darbību automatizāciju. Tomēr mēs šeit koncentrējamies uz direktoriju saplacināšanu no komandrindas.
Lietotā faila direktorija saplacināšanas piemērs
Lai labāk saprastu, ko mēs cenšamies paveikt, ņemsim piemēru iedomātu direktoriju struktūru ar nosaukumu TestDirectory, kas atrodas lietotāja sākuma mapē. Šajā piemērā TestDirectory satur apakšmapes, piemēram, SubDirectory1, SubDirectory2, SubDirectory3 utt., katrā no tām ir faili attiecīgajās mapēs. Tas, ko mēs šeit darām, ir saplacināt direktoriju struktūru, pārvietojot visus failus no apakšdirektorijas (X) uz vecāku direktoriju “TestDirectory”.Sākotnējais direktorijs un saturs, kas tiek parādīts rekursīvi, varētu izskatīties apmēram šādi:
$ atrodiet ~/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/SampleDirectory/jpgrectory
Lai saplacinātu šī direktorija un apakšdirektorija saturu atpakaļ mapē TestDirectory, izmantojiet šādu komandu virkni:
find TargetDirectory/ -mindepth 2 -type f -exec mv -i '{}' TargetDirectory/ ';'
Kad direktorija saturs ir saplacināts, tam vajadzētu izskatīties šādi:
~/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
Ņemiet vērā, ka apakšdirektoriji joprojām pastāvēs, tie būs tikai tukši. Vai ir jēga? Ja nē vai ja tas neparāda to, ko vēlaties paveikt, jūs, iespējams, nemaz nevēlaties saplacināt direktoriju, iespējams, vēlaties apvienot vai izmantot to pašu, lai izveidotu sarežģītu kopēšanu uz citur.
Direktoriju struktūras un ligzdoto failu hierarhijas saplacināšana, izmantojot komandrindu
Vai esat gatavs turpināt? Komandu virkne, ko izmantosim, lai saplacinātu direktoriju struktūru un pārvietotu visus failus no apakšdirektorijiem uz mērķa direktorija pamatni, ir šāda:
find -mindepth 2 -type f -exec mv -i '{}' ';'
Aizstāt ar izvēlēto direktoriju, lai saplacinātu, kā parādīts iepriekš minētajā piemērā.
Jā, direktorijs komandu virknē parādās divas reizes. Pirmo reizi tiek meklēts direktorijs, lai saplacinātu apakšdirektorijus, un otro reizi kā atrasto vienumu galamērķis.
Esiet precīzs ar norādīto galamērķi, jo tas nav atgriezenisks (labi, vismaz bez liela manuāla darba no jūsu puses), tāpēc dariet to tikai tad, ja esat pilnīgi pārliecināts, ka vēlaties pārcelties. visi faili mērķa direktoriju bērnu direktorijos atpakaļ uz mērķa saknes mapi.
Kā minēts iepriekš, varat to izdarīt arī OS X Finder vai vismaz novērot failu un mapju izmaiņas programmā Finder. Option+noklikšķinot uz mazajām bultiņām saraksta skatā, tiek atvērti visi apakšdirektoriji, parādot mapju hierarhiju šādi:
Pēc tam, kad tika izmantotas dažādas bash un zsh alternatīvas, šo parocīgo triku atstāja StackExcange komentētājs, un tā izrādījās vienkāršākā un saderīgākā metode. Ja zināt labāku veidu, kā saplacināt ligzdotu direktoriju, dariet to mums komentāros!