Egy beágyazott könyvtár & fájlhierarchiájának egyesítése a Mac OS X parancssorából

Anonim

Szüksége volt valaha egy könyvtárszerkezet egyesítésére, és az összes fájl tartalmát a könyvtárak gyermekmappáiból egyetlen mappába helyezte át? Míg ezt manuálisan is megteheti, ha a fájlok és mappák között mozog a Mac OS X vagy Linux fájlrendszerében, gyorsabb lehetőség a parancssor használata. Lehet, hogy egy ponton létrehoztad a könyvtárak beágyazott hierarchiáját, amelyet most vissza kell vonnod azáltal, hogy az összes fájlt áthelyezed ezekből a beágyazott mappákból, és visszahelyezed egyetlen könyvtárba, vagy lehet, hogy egyszerűsíteni akarsz egy könyvtárstruktúrát, bármi is az ok. trükk elég jól működik.

A parancssor használata a fájlok és könyvtárszerkezetek egyengetésére nyilvánvalóan azoknak a haladó felhasználóknak van fenntartva, akik általában kényelmesek a terminálhasználatban. Ha ez nem jellemzi Önt, fontolja meg manuálisan a Finder segítségével. , vagy a Mac Automator alkalmazással a fájlrendszeri tevékenységek hasonló automatizálására. Itt azonban a parancssorból történő könyvtárkiegyenlítésre összpontosítunk.

Példa egy beágyazott fájlkönyvtár egyesítésére

Ahhoz, hogy jobban megértsük, mit próbálunk elérni, vegyünk egy példát a TestDirectory nevű képzeletbeli könyvtárszerkezetre, amely a felhasználó Home mappájában található. Ebben a példában a TestDirectory almappákat tartalmaz, például SubDirectory1, SubDirectory2, SubDirectory3 stb., amelyek mindegyike a megfelelő mappákban található fájlokkal. Amit itt szeretnénk tenni, az az, hogy leegyenlítjük a könyvtárstruktúrát, és az összes fájlt áthelyezzük a SubDirectory(X)-ből a „TestDirectory” szülőkönyvtárba.A kezdeti könyvtár és a rekurzívan megjelenített tartalom a következőképpen nézhet ki:

$ keresse meg a ~/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

A könyvtár és az alkönyvtár tartalmának visszasimításához a TestDirectory mappába a következő parancssort kell használnia:

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

A könyvtár tartalmának kiegyenlítése után a listában így kell kinéznie:

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

Ne feledje, hogy az alkönyvtárak továbbra is léteznek, csak üresek. Van értelme? Ha nem, vagy ha ez nem mutatja meg, hogy mit szeretne elérni, akkor valószínűleg egyáltalán nem akar egy könyvtárat egyenlíteni, esetleg egyesítést szeretne végezni, vagy ugyanezt szeretné használni egy összetett másoláshoz máshová.

Könyvtárszerkezet és beágyazott fájlhierarchia egyesítése a parancssorral

Készen áll a folytatásra? A parancssor, amelyet a könyvtárszerkezet egyesítésére és az összes fájl áthelyezésére az alkönyvtárakból a célkönyvtár aljába fogunk használni, a következő:

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

Cserélje ki az Ön által választott könyvtárral az egyesítéshez, amint azt a fenti példa is mutatja.

Igen, a könyvtár kétszer jelenik meg a parancskarakterláncban, az első alkalommal a könyvtárban történik a keresés az alkönyvtárak egyesítésére, a második alkalommal pedig a talált elemek célhelyeként.

Légy precíz a megadott céllal, mert ez nem visszafordítható (legalábbis sok kézi munka nélkül), ezért csak akkor tegye ezt, ha teljesen biztos benne, hogy át akar költözni. a célkönyvtárak gyermekkönyvtárában lévő összes fájl vissza a cél gyökérmappába.

Amint korábban említettük, ezt megteheti az OS X Finderében is, vagy legalább megfigyelheti a fájl- és mappamódosításokat a Finderben. Az Option + a kis nyilakra kattintva a Lista nézetben megnyílik az összes alkönyvtár, a mappahierarchia a következőképpen jelenik meg:

A sokféle bash és zsh alternatívával való babrálás után ezt a praktikus trükköt egy kommentelő hagyta el a StackExcange oldalon, és ez lett a legegyszerűbb és leginkább kompatibilis módszer. Ha tud egy jobb módszert egy beágyazott könyvtár egyesítésére, tudassa velünk a megjegyzésekben!

Egy beágyazott könyvtár & fájlhierarchiájának egyesítése a Mac OS X parancssorából