• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rekurencyjne przeszukiwanie katalogow Bash

Cloud VPS
+1 głos
1,224 wizyt
pytanie zadane 11 lipca 2020 w Inne języki przez reken Początkujący (390 p.)

Witam
Chcialbym zrobic skrypcik do rekurencyjnego wyswietlania katalogow i podkatalogow w Bashu(Linux).Nie mam wielkiej wiedzy w tym temacie raczej dorywczo.Od razu odpowiem wiem wiem ze jest ls -R  ktora rekurencyjnie mi to wylistuje ale ja chcialbym napisac skrypt z precedura ktora wywoluje sama siebie
Mam cos takiego

#!/bin/bash
wyswietl(){
if [ $# -eq 0 ]; then
     return
fi
zm=$(ls $1 | wyswietl $1)     #tutaj nie wiem jak przekazac pojedyncze 
                              #wyniki z listingu zeby znowu wylistowac liste
echo $zm
}

echo '*******Skrypt wyswietlajacy wszystkie katalogi*******'
wyswietl $1

Ogolnie koncepcie mialem taka zeby wylistowac podana sciezke a nastepnie kazdy z wynikow poddac kolejnemu wylistowaniu ale siedze nad tym i nie wiem czy pomysl jest sluszny bo nie wiem jak to rozwiazac.Bede wdzieczny za podpowiedzi/odpowiedzi

komentarz 12 lipca 2020 przez VBService Ekspert (256,600 p.)
edycja 12 lipca 2020 przez VBService

How to show recursive directory listing on Linux
How to Get a Recursive Directory Listing in Linux
How to do an if statement from the result of an executed command
Bash script - variable content as a command to run
Bash exec builtin command
Bash For Loop Examples
BASH command output to the variable

Może skrypt, który wywoła się sam z nowym argumentem 
How to Handle Command Line Arguments in a Bash Script
i niech każde wywołanie robi append (coś jak dir >> tree_dir.dat pod windows cmd) do jednego pliku np.: tree_dir.dat 
i na końcu działania skryptu (nie ma więcej rekurencji) niech wyświetli zawartość pliku tree_dir.dat

1 odpowiedź

+1 głos
odpowiedź 11 lipca 2020 przez Lewo Gaduła (3,000 p.)
wybrane 7 stycznia 2021 przez reken
 
Najlepsza
Podpowiedz - struktura folderów - drzewo, pliki - liście
Algorytmy - przeglądanie drzewa https://pl.wikipedia.org/wiki/Przechodzenie_drzewa
komentarz 12 lipca 2020 przez reken Początkujący (390 p.)
Ok przedstawiles sposob przechodzenia przez drzewo binarne ale to jakby krok dalej bo
ja zastanawiam sie w glownej mierze jak wyswietlic podkatalogi danego katalogu i pobrac po kolei kazdy argument i go wykorzystac.Tzn jak wykorzystywac wynik jednego polecenia aby zastosowac do kolejnego.
komentarz 12 lipca 2020 przez reken Początkujący (390 p.)

Zmienilem teraz to w ten sposob ze wrzucam to w petle for i iteruje po wyswietleniach  katalogu i dla kazdego odpalalbym znowu ta sama funkcje.Jesli plik nie istnieje to return
Gdzie widzialem podobne rozwiazanie z te petla i dzialalo 
Tu jest problem bo polecenie ls nie wyswietla katalogu w postaci sciezki.Jakies kolejne sugestie

komentarz 12 lipca 2020 przez Lewo Gaduła (3,000 p.)

@reken, w linku do wiki masz "Sposoby przechodzenia dowolnego drzewa"
Zależy jak chcesz to zrealizować. Jak masz rekurencję i chcesz przekazywać pośrednie wyniki do kolejnych wywołań to zobacz sobie jak się robi silnie z "akumulatorem" (https://pl.wikipedia.org/wiki/Rekurencja_ogonowa)
Nie zrobisz przejścia in-order na drzewie niebinarnym, ale reszta byłaby okej

Możesz przed wywołaniem "rekurencyjnie" następnej metody wyświetlić węzeł (katalog).
Czy chcesz najpierw wszystkie katalogi w danym folderze, zanim wejdziesz w katalogi, katalogów to patrz na przechodzenie

Rozwiązanie z pętlą - nie znam basha ale strzelam, że ls -l listuje dany folder to musisz mieć jakiegoś while dopóki da się zejść "w dół" (czytaj - do kolejnego folderu) i wyświetlać.
 

Podobne pytania

+1 głos
2 odpowiedzi 270 wizyt
0 głosów
1 odpowiedź 521 wizyt
pytanie zadane 3 czerwca 2021 w SQL, bazy danych przez Gerlach Nowicjusz (220 p.)
0 głosów
2 odpowiedzi 381 wizyt

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...