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

Rekurencyjne przeszukiwanie katalogow Bash

Object Storage Arubacloud
+1 głos
759 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 (253,280 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 141 wizyt
0 głosów
1 odpowiedź 370 wizyt
pytanie zadane 3 czerwca 2021 w SQL, bazy danych przez Gerlach Nowicjusz (220 p.)
0 głosów
2 odpowiedzi 269 wizyt

92,565 zapytań

141,416 odpowiedzi

319,598 komentarzy

61,948 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...