Tasoita sisäkkäisen hakemiston & tiedostohierarkia Mac OS X:n komentoriviltä
Oletko koskaan tarvinnut litistää hakemistorakennetta siirtämällä kaiken tiedoston sisällön hakemistojen alakansioista yhteen kansioon? Vaikka voit tehdä tämän manuaalisesti siirtämällä tiedostoja ja kansioita Mac OS X:n tai Linuxin tiedostojärjestelmästä, nopeampi vaihtoehto on käyttää komentoriviä. Ehkä loit jossain vaiheessa sisäkkäisen hakemistohierarkian, joka sinun on nyt kumottava siirtämällä kaikki tiedostot pois sisäkkäisistä kansioista ja takaisin yhteen hakemistoon, tai ehkä haluat yksinkertaistaa hakemistorakennetta, oli syy mikä tahansa. temppu toimii varsin hyvin.
Komentorivin käyttäminen tiedostojen ja hakemistorakenteiden tasoittamiseen on tietysti parasta varattu edistyneille käyttäjille, jotka ovat tottuneet käyttämään päätettä yleensä. Jos tämä ei kuvaa sinua, harkitse sen tekemistä manuaalisesti Finderin kautta. , tai käyttämällä Mac Automator -sovellusta samanlaisen tiedostojärjestelmän toimintojen automatisoinnin suorittamiseen. Tässä keskitymme kuitenkin hakemistojen tasoittamiseen komentoriviltä.
Esimerkki sisäkkäisen tiedostohakemiston tasoittamisesta
Ymmärtääksemme paremmin, mitä yritämme saada aikaan, otamme esimerkin kuvitteellisesta hakemistorakenteesta nimeltä TestDirectory, joka sijaitsee käyttäjän kotikansiossa. Tässä esimerkissä TestDirectory sisältää alikansioita, kuten SubDirectory1, SubDirectory2, SubDirectory3 jne., joissa kussakin on tiedostot vastaavissa kansioissa. Haluamme tehdä tässä litistämällä hakemistorakenteen siirtämällä kaikki tiedostot SubDirectory(X) -emohakemistoon "TestDirectory".Alkuperäinen hakemisto ja sisältö, joka näytetään rekursiivisesti komennolla, voisi näyttää suunnilleen tältä:
$ etsi ~/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/jpgy
Jos haluat litistää tämän hakemiston ja alihakemiston sisällön takaisin TestDirectory-kansioon, käytä seuraavaa komentomerkkijonoa:
find TargetDirectory/ -mindepth 2 -type f -exec mv -i '{}' TargetDirectory/ ';'
Hakemiston sisällön tasoittamisen jälkeen sen pitäisi näyttää tältä listattuna:
~/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
Huomaa, että alihakemistot ovat edelleen olemassa, ne ovat vain tyhjiä. Käydä järkeen? Jos ei, tai jos se ei osoita, mitä haluat saavuttaa, et todennäköisesti halua litistää hakemistoa ollenkaan, ehkä haluat yhdistää tai käyttää samaa monimutkaisten kopioiden tekemiseen muualle.
Hakemistorakenteen ja sisäkkäisten tiedostojen hierarkian tasoittaminen komentorivillä
Valmis jatkamaan? Komentomerkkijono, jota aiomme käyttää tasoittamaan hakemistorakennetta ja siirtämään kaikki tiedostot alihakemistoista kohdehakemiston pohjaan, on seuraava:
find -mindepth 2 -type f -exec mv -i '{}' ';'
Korvaa valitsemallasi hakemistolla litistääksesi, kuten yllä olevassa esimerkissä näkyy.
Kyllä, hakemisto näkyy kahdesti komentomerkkijonossa, ensimmäisen kerran etsitään hakemistosta alihakemistojen tasoittamiseksi ja toisen kerran löydettyjen kohteiden määränpäänä.
Ole täsmällinen määritetyn määränpään kanssa, koska tämä ei ole peruutettavissa (no, ainakaan ilman paljon manuaalista työtäsi), joten tee tämä vain, jos olet täysin varma, että haluat muuttaa kaikki kohdehakemistojen lapsihakemistojen tiedostot takaisin kohdejuurikansioon.
Kuten aiemmin mainittiin, voit tehdä tämän myös OS X:n Finderissa tai ainakin tarkkailla tiedostojen ja kansioiden muutoksia Finderissa. Optio+napsauttamalla pieniä nuolia luettelonäkymässä avaa kaikki alihakemistot ja näyttää kansiohierarkian seuraavasti:
Seurattuaan erilaisia bash- ja zsh-vaihtoehtoja, StackExcangen kommentoija jätti tämän kätevän tempun, ja se oli lopulta helpoin ja yhteensopivin menetelmä. Jos tiedät paremman tavan litistää sisäkkäinen hakemisto, kerro siitä meille kommenteissa!