Izravnajte ugniježđeni direktorij & Hijerarhija datoteka iz naredbenog retka Mac OS X
Jeste li ikada trebali poravnati strukturu direktorija, premještajući sav sadržaj datoteke iz podređenih mapa direktorija u jednu mapu? Iako to možete učiniti ručno pomicanjem datoteka i mapa iz datotečnog sustava Mac OS X ili Linux, brža opcija je okrenuti se naredbenom retku. Možda ste u jednom trenutku stvorili ugniježđenu hijerarhiju direktorija koju sada trebate poništiti premještanjem svih datoteka iz tih ugniježđenih mapa i natrag u jedan direktorij, ili možda želite pojednostaviti strukturu direktorija, bez obzira na razlog, ovo trik dosta dobro funkcionira.
Korištenje naredbenog retka za postizanje izravnavanja datoteka i struktura direktorija očito je najbolje rezervirano za napredne korisnike koji općenito znaju koristiti terminal, ako se to ne odnosi na vas, razmislite o tome da to učinite ručno putem Findera , ili pomoću aplikacije Mac Automator za postizanje slične automatizacije aktivnosti datotečnog sustava. Međutim, ovdje se fokusiramo na izravnavanje imenika iz naredbenog retka.
Primjer izravnavanja ugniježđenog direktorija datoteka
Da bismo bolje razumjeli što pokušavamo postići, uzmimo primjer zamišljene strukture direktorija pod nazivom TestDirectory koji se nalazi u korisničkoj početnoj mapi. U ovom primjeru TestDirectory sadrži podmape kao što su SubDirectory1, SubDirectory2, SubDirectory3 itd., svaka s datotekama u tim mapama. Ono što ovdje želimo učiniti je poravnati strukturu direktorija, premjestiti sve datoteke iz SubDirectory(X) u nadređeni direktorij "TestDirectory".Početni direktorij i sadržaj prikazani rekurzivno s mogu izgledati otprilike ovako:
$ pronađi ~/TestDirectory/ -tip 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
Da biste izravnali sadržaj ovog direktorija i poddirektorija natrag u mapu TestDirectory, upotrijebili biste sljedeći naredbeni niz:
find TargetDirectory/ -mindepth 2 -type f -exec mv -i '{}' TargetDirectory/ ';'
Nakon što je sadržaj direktorija poravnat, trebao bi izgledati ovako kada je izlistan:
~/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
Imajte na umu da će poddirektoriji i dalje postojati, samo će biti prazni. Ima smisla? Ako ne, ili ako to ne pokazuje što želite postići, vjerojatno uopće ne želite izravnati direktorij, možda želite spojiti ili upotrijebiti ditto da napravite složenu kopiju na drugo mjesto.
Ujednačavanje strukture direktorija i hijerarhije ugniježđene datoteke pomoću naredbenog retka
Spremni za nastavak? Naredbeni niz koji ćemo koristiti za izravnavanje strukture direktorija i premještanje svih datoteka iz poddirektorija u bazu ciljnog direktorija je sljedeći:
find -mindepth 2 -type f -exec mv -i '{}' ';'
Zamijenite direktorijem po svom izboru za izravnavanje, kao što je pokazano u gornjem primjeru.
Da, direktorij se pojavljuje dva puta u naredbenom nizu, prvi put je direktorij koji se pretražuje radi izravnavanja poddirektorija, a drugi put kao odredište za pronađene stavke.
Budite precizni s navedenim odredištem, jer se to ne može poništiti (dobro, barem bez puno ručnog rada s vaše strane), stoga ovo učinite samo ako ste apsolutno sigurni da se želite preseliti sve datoteke u ciljnim direktorijima podređenim direktorijima natrag u ciljnu korijensku mapu.
Kao što je prije spomenuto, to također možete učiniti u Finderu OS X, ili barem promatrati promjene datoteka i mapa u Finderu. Option + klik na male strelice u prikazu popisa otvara sve poddirektorije, prikazujući hijerarhiju mapa ovako:
Nakon petljanja s raznim bash i zsh alternativama, ovaj praktični trik ostavio je komentator na StackExcangeu i na kraju se pokazao kao najlakša i najkompatibilnija metoda. Ako znate za bolji način izravnavanja ugniježđenog imenika, javite nam u komentarima!