Izravnajte ugnezdeni imenik & Hierarhija datotek iz ukazne vrstice Mac OS X

Anonim

Ali ste kdaj morali izravnati strukturo imenika in premakniti vso vsebino datoteke iz podrejenih map imenikov v eno mapo? Čeprav lahko to storite ročno s premikanjem datotek in map iz datotečnega sistema Mac OS X ali Linux, je hitrejša možnost, da se obrnete na ukazno vrstico. Morda ste na eni točki ustvarili ugnezdeno hierarhijo imenikov, ki jo morate zdaj razveljaviti tako, da premaknete vse datoteke iz teh ugnezdenih map in nazaj v en sam imenik, ali morda želite poenostaviti strukturo imenika, ne glede na razlog, to trik deluje zelo dobro.

Uporaba ukazne vrstice za doseganje sploščitve datotek in struktur imenikov je očitno najbolje rezervirana za napredne uporabnike, ki so zadovoljni z uporabo terminala na splošno, če to ne opisuje vas, razmislite o tem, da to storite ročno prek Finderja , ali z uporabo aplikacije Mac Automator za doseganje podobne avtomatizacije dejavnosti datotečnega sistema. Vendar se tukaj osredotočamo na sploščitev imenikov iz ukazne vrstice.

Primer izravnave ugnezdenega imenika datotek

Da bi bolje razumeli, kaj poskušamo doseči, vzemimo primer namišljene strukture imenika, imenovane TestDirectory, ki se nahaja v domači mapi uporabnika. V tem primeru TestDirectory vsebuje podmape, kot so SubDirectory1, SubDirectory2, SubDirectory3 itd., Vsaka z datotekami v teh ustreznih mapah. Kar želimo storiti, je izravnati strukturo imenika in premakniti vse datoteke iz SubDirectory(X) v nadrejeni imenik »TestDirectory«.Začetni imenik in vsebina, prikazana rekurzivno z lahko izgledata nekako takole:

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

Če želite vsebino tega imenika in podimenika poravnati nazaj v mapo TestDirectory, uporabite naslednji ukazni niz:

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

Ko je vsebina imenika sploščena, bi morala biti prikazana takole:

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

Upoštevajte, da podimeniki še vedno obstajajo, le prazni bodo. Smiselno? Če ne, ali če to ne dokazuje, kaj želite doseči, verjetno sploh ne želite izravnati imenika, morda želite združiti ali uporabiti enako, da naredite zapleteno kopijo drugam.

Izravnavanje strukture imenika in hierarhije ugnezdenih datotek z ukazno vrstico

Ste pripravljeni nadaljevati? Ukazni niz, ki ga bomo uporabili za izravnavo strukture imenika in premaknitev vseh datotek iz podimenikov v osnovo ciljnega imenika, je naslednji:

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

Zamenjajte z imenikom po vaši izbiri za poravnavo, kot je prikazano v zgornjem primeru.

Da, imenik se pojavi dvakrat v ukaznem nizu, prvič je imenik, v katerem se išče, da se izravnajo podimeniki, in drugič kot cilj za najdene elemente.

Bodite natančni z navedenim ciljem, ker tega ni mogoče razveljaviti (no, vsaj brez veliko ročnega dela z vaše strani), zato to storite samo, če ste popolnoma prepričani, da se želite preseliti vse datoteke v podrejenih imenikih ciljnih imenikov nazaj v ciljno korensko mapo.

Kot že omenjeno, lahko to storite tudi v Finderju OS X ali pa vsaj opazujete spremembe datotek in map v Finderju. Option + klik na majhne puščice v pogledu seznama odpre vse podimenike, ki prikazujejo hierarhijo map tako:

Po igranju z različnimi alternativami bash in zsh je ta priročen trik pustil komentator na StackExcange in na koncu je bil najpreprostejši in najbolj združljiv način. Če poznate boljši način izravnave ugnezdenega imenika, nam to sporočite v komentarjih!

Izravnajte ugnezdeni imenik & Hierarhija datotek iz ukazne vrstice Mac OS X