Spłaszczanie zagnieżdżonego katalogu & Hierarchia plików z wiersza poleceń systemu Mac OS X
Czy kiedykolwiek potrzebowałeś spłaszczyć strukturę katalogów, przenosząc całą zawartość plików z folderów podrzędnych katalogów do jednego folderu? Chociaż możesz to zrobić ręcznie, przenosząc pliki i foldery z systemu plików Mac OS X lub Linux, szybszą opcją jest skorzystanie z wiersza poleceń. Być może w pewnym momencie utworzyłeś zagnieżdżoną hierarchię katalogów, którą teraz musisz cofnąć, przenosząc wszystkie pliki z tych zagnieżdżonych folderów z powrotem do jednego katalogu, a może chcesz uprościć strukturę katalogów, niezależnie od powodu, to sztuczka działa całkiem dobrze.
Używanie wiersza poleceń do spłaszczania plików i struktur katalogów jest oczywiście najlepiej zarezerwowane dla zaawansowanych użytkowników, którzy ogólnie czują się swobodnie w korzystaniu z terminala. Jeśli to nie pasuje do Ciebie, rozważ zrobienie tego ręcznie za pomocą Findera lub za pomocą aplikacji Mac Automator w celu osiągnięcia podobnej automatyzacji działań związanych z systemem plików. Jednak tutaj skupiamy się na spłaszczaniu katalogów z wiersza poleceń.
Przykład spłaszczania zagnieżdżonego katalogu plików
Aby lepiej zrozumieć, co próbujemy osiągnąć, weźmy przykład wyimaginowanej struktury katalogów o nazwie TestDirectory znajdującej się w folderze domowym użytkownika. W tym przykładzie TestDirectory zawiera podfoldery, takie jak SubDirectory1, SubDirectory2, SubDirectory3 itd., z których każdy zawiera pliki w odpowiednich folderach. To, co chcemy tutaj zrobić, to spłaszczenie struktury katalogów, przeniesienie wszystkich plików z SubDirectory (X) do katalogu nadrzędnego „TestDirectory”.Początkowy katalog i zawartość wyświetlane rekursywnie z mogą wyglądać mniej więcej tak:
$ find ~/TestDirectory/ -type f ~/TestDirectory/rooty.jpg ~/TestDirectory/SampleDirectory1/beta-tool-preview.jpg ~/TestDirectory/SampleDirectory1 /alphabeta-tool.jpg ~/KatalogTestowy/KatalogPrzykladowy2/test-tools.jpg ~/KatalogTestowy/KatalogPrzykladowy3/test-png.jpg ~/KatalogTestowy/KatalogPrzykladowy3/test1.jpg ~/KatalogTestowy/KatalogPrzykladowy3/test2.jpg
Aby spłaszczyć zawartość tego katalogu i podkatalogu z powrotem do folderu TestDirectory, należy użyć następującego ciągu poleceń:
find TargetDirectory/ -mindepth 2 -type f -exec mv -i '{}' TargetDirectory/ ';'
Po spłaszczeniu zawartości katalogu powinien on wyglądać tak, jak na liście:
~/KatalogTestowy/rooty.jpg ~/KatalogTestowy/beta-tool-preview.jpg ~/KatalogTestowy/alphabeta-tool.jpg ~/KatalogTestowy/narzędzia-testowe .jpg ~/KatalogTestowy/test-png.jpg ~/KatalogTestowy/test1.jpg ~/KatalogTestowy/test2.jpg
Pamiętaj, że podkatalogi nadal będą istnieć, będą po prostu puste. Ma sens? Jeśli nie lub jeśli to nie pokazuje, co chcesz osiągnąć, prawdopodobnie w ogóle nie chcesz spłaszczać katalogu, być może chcesz scalić lub użyć ditto do wykonania złożonej kopii w innym miejscu.
Spłaszczanie struktury katalogów i hierarchii zagnieżdżonych plików za pomocą wiersza poleceń
Gotowy do kontynuowania? Ciąg poleceń, którego użyjemy do spłaszczenia struktury katalogów i przeniesienia wszystkich plików z podkatalogów do bazy katalogu docelowego, jest następujący:
find -mindepth 2 -type f -exec mv -i '{}' ';'
Zastąp wybranym katalogiem do spłaszczenia, jak pokazano w powyższym przykładzie.
Tak, katalog pojawia się dwukrotnie w ciągu poleceń, za pierwszym razem jest to katalog przeszukiwany w celu spłaszczenia podkatalogów, a za drugim razem jako miejsce docelowe znalezionych elementów.
Precyzyjnie określ miejsce docelowe, ponieważ jest to nieodwracalne (przynajmniej bez dużego nakładu pracy ręcznej z Twojej strony), więc rób to tylko wtedy, gdy masz absolutną pewność, że chcesz się przenieść wszystkie pliki w katalogach docelowych katalogi podrzędne z powrotem do docelowego folderu głównego.
Jak wspomniano wcześniej, możesz to również zrobić w Finderze systemu OS X lub przynajmniej obserwować zmiany plików i folderów w Finderze. Option+kliknięcie małych strzałek w widoku listy otwiera wszystkie podkatalogi, pokazując hierarchię folderów w następujący sposób:
Po zabawie z różnymi alternatywami dla basha i Zsh, ta przydatna sztuczka została pozostawiona przez komentującego na StackExcange i okazała się najłatwiejszą i najbardziej kompatybilną metodą. Jeśli znasz lepszy sposób na spłaszczenie zagnieżdżonego katalogu, daj nam znać w komentarzach!