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

Rekurencyjne przeszukiwanie katalogow Bash

VPS Starter Arubacloud
+1 głos
734 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 (251,210 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 136 wizyt
0 głosów
1 odpowiedź 357 wizyt
pytanie zadane 3 czerwca 2021 w SQL, bazy danych przez Gerlach Nowicjusz (220 p.)
0 głosów
2 odpowiedzi 267 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...