Pętla bash za pośrednictwem plików w katalogu?

Pętla bash za pośrednictwem plików w katalogu?

Czasami zgodnie z naszymi wymaganiami musimy przenieść i zapętlić wszystkie pliki i katalogi w danym folderze. Załóżmy, że chcemy uruchomić określone polecenie w każdym folderze i pliku katalogu. W tym celu będziemy iterować wszystkie katalogi za pomocą pętli. Tylko kilka narzędzi CLI lub narzędzia wiersza poleceń pozwala nam uruchomić to samo polecenie dla wielu plików. Ale w naszym przypadku używamy skonstrukcji bash skorupy i używamy do pętli, aby przyspieszyć dowolne polecenie, aby nasza praca była wydajna.

Nie tylko w naszym przypadku, ale zapętlanie w całym programowaniu jest bardzo wydajnym i potężnym podejściem i praktyką. Z powodu zapętlania możemy zastosować tę samą koncepcję na wielu plikach i grupie elementów za pomocą minimalnej ilości kodu, aby uzyskać nasze pożądane wyjście. Aby zapętlić katalogi i pliki w Bash, używamy globalnego wzoru o nazwie „Wild Card”, który jest standardowym wzorem, który pasuje do wszystkich plików. Ale dopasujemy tylko katalogi, używając „/” na końcu naszego polecenia. Następnie przypisujemy każdemu katalogowi wartość dostępnego katalogu „Dir”. Na koniec użyjemy polecenia Echo do pętli, aby przechodzić przez katalogi. Technicznie, aby wykonać zadanie, najpierw musimy zainicjować zmienną, a następnie przypisujemy zestaw danych do zmiennej, przez którą chcemy zapętlić. W naszym przypadku przechodzi przez katalogi za pomocą postaci „*”.

Składnia:

Poniżej znajduje się składnia do zapętlania przez katalogi.

dla folderu f in/folder/*/**/*; Do
instrukcja
zrobione;

W tym używamy pętli For wraz ze zmienną „F”, która zostanie utworzona. Definiuje działanie, które należy wykonywać za każdym razem, gdy pętla będzie wykonywana. Następnie, po zdefiniowaniu zestawu danych, z którego przejdzie, zdefiniujemy ścieżkę, z której pliki mają zostać pobrane lub po prostu użyjemy gwiazdka „*”, która pozwoli kompilatorowi pobrać z bieżącego katalogu. W naszym przypadku przekazaliśmy dwie ścieżki z nazwą „Folder” „/folder/*” pobiera pliki w folderze, podczas gdy „folder/**/*” pobiera pliki z jego podfolderów.

Przykład nr. 1:

Spróbujemy metody zapętlania przez katalogi lub pliki, aby lepiej pojęcie o jej pracy. W tym celu najpierw sprawdźmy wersję Bash, którą mamy teraz, ponieważ wersja powinna zostać zaktualizowana, aby korzystać z pętli. Aby sprawdzić wersję BASH, uruchomimy polecenie:

Linux@Linux -virtualbox: ~ $ bash -version

Wyświetli wersję bash, która obecnie działa w naszym systemie, taka sama, jak pokazano poniżej, w naszym systemie jest „5.0,17 ”.

Teraz do wykonania pętli najpierw utworzymy nowy katalog w naszym systemie, w którym dodamy niektóre pliki. Aby utworzyć nowy katalog, uruchomimy polecenie:

Linux@Linux-virtualbox: ~ $ mkdir Linux

Po uruchomieniu powyższego polecenia niczego nie wykona, po prostu przekazuje ci terminal, aby uruchomić kolejne polecenia, jak widać poniżej.

Teraz, aby sprawdzić, czy nasz katalog został pomyślnie utworzony, czy nie, przejdziemy do plików w naszym systemie, a następnie przejdziemy do katalogu domowego, możesz zobaczyć utworzony folder o nazwie „Linux”. W twoim umyśle może pojawić się jedno pytanie, dlaczego sprawdzamy folder w katalogu domowym? Dzieje się tak tylko dlatego, że nie zapewniliśmy do niego żadnej ścieżki, dlatego zawsze tworzy nowe foldery lub pliki domyślnie w katalogu domowym.

Teraz musimy utworzyć pliki w katalogu Linux, aby najpierw przejdziemy do naszego katalogu Linux za pomocą polecenia „CD”, jak pokazano poniżej:

Linux@Linux-virtualbox: ~ $ CD Linux

Po uruchomieniu polecenia naszego terminala będzie wyglądać tak.

Korzystając z polecenia „Echo”, utworzymy nowy plik z manekinem, uruchamiając następujące polecenie:

Linux@Linux-virtualbox: ~/Linux $ echo „My New File 1”> myFile_a.tekst
Linux@Linux-virtualbox: ~ /Linux $ echo „My New File 1”> myFile_B.tekst
Linux@Linux-virtualbox: ~ /Linux $ echo „My New File 1”> myFile_C.tekst
Linux@Linux-virtualbox: ~ /Linux $ echo „My New File 1”> myFile_D.tekst

Utworzyliśmy 4 pliki w naszym katalogu Linux, nazywając je „myfile_a”, „myFile_B”,

„Myfile_c” i „myfile_d”, które możemy zobaczyć w fragmencie poniżej. Istnieje wiele sposobów tworzenia nowych plików, takich jak za pomocą edytora tekstu nano, za pomocą polecenia CAT, za pomocą polecenia dotykowego i wielu innych. Nie jest obowiązkowe używanie echo, możesz użyć dowolnego polecenia, które chcesz.

Jak tworzyliśmy nasze pliki, nadszedł czas, aby pozyskać wszystkie pliki za pomocą pętli. Aby to wykonać, uruchomimy inne polecenie.

Linux@Linux-virtualbox: ~ /Linux $ dla f w *; echo $ f; zrobione

W powyższym poleceniu utworzyliśmy zmienną „F”, która zdefiniuje działanie, które zostanie podjęte podczas wykonywania pętli. W naszym przypadku wyświetlamy nazwy plików przechowywane w katalogu Linux, jak widać na fragmencie poniżej.

Korzystając z powyższego polecenia, wyświetliśmy nazwy plików przechowywane w katalogu Linux. Załóżmy, że chcemy wyświetlić zawartość wraz z nazwą pliku, można to również zrobić za pomocą pętli zamiast pisać polecenie echo.

Linux@Linux-virtualbox: ~ /Linux $ dla f w *; echo $ f; zrobione

Jak pokazano poniżej, zawartość wszystkich plików jest wyświetlana poniżej oddzielona przez nową linię. W powyższym poleceniu utworzyliśmy zmienną „F”, nie jest konieczne tworzenie tej samej zmiennej. Możesz utworzyć dowolną zmienną według potrzeb, nie jest obowiązkowe użycie „f”.

Wniosek

Dzisiaj studiowaliśmy zapętlanie za pomocą katalogów, wprowadziliśmy cię do pętli dla dla pobierania plików z katalogów, a także z jego pracami. Wyjaśniliśmy ci metodę użycia „do pętli” do pobierania katalogów za pomocą prostego przykładu, w którym najpierw utworzyliśmy nowy katalog i pliki, a następnie po prostu uzyskaliśmy ich dostęp za pomocą „do pętli”.