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

Rekurencyjne przeszukiwanie katalogow Bash

+1 głos
165 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 VIP (128,770 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 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

0 głosów
1 odpowiedź 65 wizyt
pytanie zadane 3 czerwca w SQL, bazy danych przez Gerlach Nowicjusz (220 p.)
0 głosów
2 odpowiedzi 74 wizyt
0 głosów
0 odpowiedzi 80 wizyt
pytanie zadane 15 grudnia 2020 w Rozwój zawodowy, nauka, szkoła, praca przez dellek1 Nowicjusz (120 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

85,239 zapytań

134,053 odpowiedzi

297,242 komentarzy

56,327 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...