Vyrovnať vnorený adresár & hierarchiu súborov z príkazového riadku systému Mac OS X

Anonim

Potrebovali ste niekedy zjednotiť štruktúru adresárov a presunúť všetok obsah súborov z podradených priečinkov adresárov do jedného priečinka? Aj keď to môžete urobiť ručne presúvaním súborov a priečinkov zo súborového systému Mac OS X alebo Linuxu, rýchlejšou možnosťou je obrátiť sa na príkazový riadok. Možno ste v jednom bode vytvorili vnorenú hierarchiu adresárov, ktorú teraz musíte vrátiť späť presunutím všetkých súborov z týchto vnorených priečinkov späť do jedného adresára, alebo možno hľadáte zjednodušenie adresárovej štruktúry, nech už je dôvod akýkoľvek. trik funguje celkom dobre.

Používanie príkazového riadka na sploštenie súborov a adresárových štruktúr je samozrejme najlepšie vyhradené pre pokročilých používateľov, ktorí sú spokojní s používaním terminálu vo všeobecnosti, ak vás to nepopisuje, zvážte to manuálne cez Finder alebo pomocou aplikácie Mac Automator na vykonanie podobnej automatizácie činností systému súborov. Zameriavame sa však na sploštenie adresárov z príkazového riadku.

Príklad sploštenia vnoreného adresára súborov

Pre lepšie pochopenie toho, čo sa snažíme dosiahnuť, si vezmime príklad imaginárnej adresárovej štruktúry s názvom TestDirectory, ktorá sa nachádza v domovskom priečinku používateľa. V tomto príklade TestDirectory obsahuje podpriečinky ako SubDirectory1, SubDirectory2, SubDirectory3 atď., pričom každý obsahuje súbory v týchto príslušných priečinkoch. To, čo tu chceme urobiť, je vyrovnať štruktúru adresára a presunúť všetky súbory z podadresára (X) do nadradeného adresára „TestDirectory“.Počiatočný adresár a obsah zobrazené rekurzívne so symbolom by mohli vyzerať asi takto:

$ nájsť ~/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/Sample2.jpg3

Na vyrovnanie obsahu tohto adresára a podadresára späť do priečinka TestDirectory by ste použili nasledujúci príkazový reťazec:

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

Po vyrovnaní obsahu adresára by mal po vypísaní vyzerať takto:

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

Všimnite si, že podadresáre budú stále existovať, len budú prázdne. Dáva zmysel? Ak nie, alebo ak to nepreukazuje, čo chcete dosiahnuť, pravdepodobne nechcete adresár vôbec sploštiť, možno sa snažíte zlúčiť alebo použiť to isté na vytvorenie zložitej kópie na iné miesto.

Vyrovnanie adresárovej štruktúry a hierarchie vnorených súborov pomocou príkazového riadka

Ste pripravení pokračovať? Príkazový reťazec, ktorý použijeme na vyrovnanie adresárovej štruktúry a presun všetkých súborov z podadresárov do základne cieľového adresára, je nasledujúci:

find -hĺbka mysle 2 -typ f -exec mv -i '{}' ';'

Nahradiť adresárom podľa vlastného výberu, ktorý chcete vyrovnať, ako je znázornené v príklade vyššie.

Áno, adresár sa v príkazovom reťazci objaví dvakrát, prvý raz je to adresár, ktorý sa hľadá na vyrovnanie podadresárov a druhýkrát ako cieľ pre nájdené položky.

Uveďte presne určené miesto určenia, pretože to nie je možné vrátiť späť (teda aspoň bez veľkej ručnej práce z vašej strany), takže to urobte iba vtedy, ak ste si úplne istí, že sa chcete presťahovať všetky súbory v podradených adresároch cieľových adresárov späť do cieľového koreňového priečinka.

Ako už bolo spomenuté, môžete to urobiť aj vo Finderi OS X alebo aspoň sledovať zmeny súborov a priečinkov vo Finderi. Option+kliknutím na malé šípky v zobrazení zoznamu sa otvoria všetky podadresáre so zobrazením hierarchie priečinkov takto:

Po hraní s rôznymi alternatívami bash a zsh tento šikovný trik zanechal komentátor na StackExcange a skončilo to ako najjednoduchšia a najkompatibilnejšia metóda. Ak poznáte lepší spôsob, ako vyrovnať vnorený adresár, dajte nám vedieť v komentároch!

Vyrovnať vnorený adresár & hierarchiu súborov z príkazového riadku systému Mac OS X