Išlyginkite įdėto katalogo & failų hierarchiją iš „Mac OS X“ komandų eilutės

Anonim

Ar kada nors reikėjo išlyginti katalogų struktūrą, perkeliant visą failo turinį iš antrinių katalogų aplankų į vieną aplanką? Nors tai galite padaryti rankiniu būdu perkeldami failus ir aplankus iš „Mac OS X“ arba „Linux“ failų sistemos, greitesnė parinktis yra pasukti į komandinę eilutę. Galbūt vienu metu sukūrėte įdėtą katalogų hierarchiją, kurią dabar turite atšaukti, perkeldami visus failus iš tų įdėtų aplankų ir atgal į vieną katalogą, o gal norite supaprastinti katalogų struktūrą, kad ir kokia būtų priežastis. triukas veikia gana gerai.

Komandinės eilutės naudojimas failams ir katalogų struktūroms išlyginti, be abejo, geriausiai tinka patyrusiems vartotojams, kurie paprastai naudoja terminalą. arba naudojant „Mac Automator“ programą panašiai failų sistemos veiklai automatizuoti. Tačiau čia daugiausia dėmesio skiriame katalogų išlyginimui iš komandinės eilutės.

Įdėto failo katalogo išlyginimo pavyzdys

Norėdami geriau suprasti, ko siekiame, paimkime įsivaizduojamos katalogo struktūros, vadinamos TestDirectory, pavyzdį, esančią vartotojo pagrindiniame aplanke. Šiame pavyzdyje TestDirectory yra poaplankiai, tokie kaip SubDirectory1, SubDirectory2, SubDirectory3 ir kt., kurių kiekviename yra failai atitinkamuose aplankuose. Tai, ką mes norime padaryti, yra išlyginti katalogo struktūrą, perkeliant visus failus iš SubDirectory (X) į pirminį katalogą „TestDirectory“.Pradinis katalogas ir turinys, rodomas rekursyviai, gali atrodyti maždaug taip:

$ suraskite ~/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/testi.jpgrectory

Norėdami išlyginti šio katalogo ir pakatalogio turinį atgal į aplanką TestDirectory, naudokite šią komandų eilutę:

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

Suglaudinus katalogo turinį, jis turėtų atrodyti taip:

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

Atkreipkite dėmesį, kad pakatalogiai vis tiek išliks, jie bus tik tušti. Prasminga? Jei ne arba tai neparodo, ko norite pasiekti, tikriausiai visai nenorite išlyginti katalogo, galbūt norite sujungti arba naudoti tą patį, kad padarytumėte sudėtingą kopiją į kitą vietą.

Katalogo struktūros ir įdėtų failų hierarchijos išlyginimas naudojant komandų eilutę

Pasiruošę tęsti? Komandų eilutė, kurią naudosime norėdami išlyginti katalogo struktūrą ir perkelti visus failus iš pakatalogių į tikslinio katalogo pagrindą, yra tokia:

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

Pakeiskite pasirinktu katalogu, kad išlygintumėte, kaip parodyta anksčiau pateiktame pavyzdyje.

Taip, komandų eilutėje katalogas rodomas du kartus. Pirmą kartą ieškoma katalogo, kad būtų išlyginti pakatalogiai, o antrą kartą – kaip rastų elementų paskirties vieta.

Būkite tikslūs nurodydami nurodytą paskirties vietą, nes tai negrįžtama (bent jau be daug rankų darbo), todėl darykite tai tik tuo atveju, jei esate visiškai tikri, kad norite persikelti visi failai tikslinių katalogų antriniuose kataloguose atgal į tikslinį šakninį aplanką.

Kaip minėta anksčiau, tai galite padaryti ir OS X Finder programoje arba bent jau stebėti failų ir aplankų pakeitimus programoje Finder. „Option“ + spustelėjus mažas rodykles sąrašo rodinyje atidaromi visi pakatalogiai, rodoma tokia aplankų hierarchija:

Patyręs įvairias bash ir zsh alternatyvas, šį patogų triuką paliko „StackExcange“ komentatorius, ir tai buvo lengviausias ir labiausiai suderinamas metodas. Jei žinote geresnį būdą išlyginti įdėtą katalogą, praneškite mums komentaruose!

Išlyginkite įdėto katalogo & failų hierarchiją iš „Mac OS X“ komandų eilutės