Bash-loop door bestanden in een map

Bash Loop Through Files Directory



In Ubuntu, inclusief Bash, hebben loops het mogelijk gemaakt om bewerkingen op meerdere bestanden toe te passen. Looping is het meest effectief omdat het de gebruiker in staat stelt dezelfde logica herhaaldelijk op het item toe te passen door een kleine coderegel te gebruiken.

Om het concept van het doorlopen van bestanden in de directory te begrijpen, hebt u toegang nodig tot de Ubuntu-toepassing en -services. Als u enkele privileges heeft, kunt u alleen met bestanden en mappen werken.







Je zou Bash op het Ubuntu-besturingssysteem moeten hebben geïnstalleerd. In sommige installaties wordt het standaard geïnstalleerd bij het bijwerken van pakketten. Als het al is geïnstalleerd, moet u de versie upgraden omdat deze hoger moet zijn dan 4. Om door te gaan met de huidige gids, moet u de versie hierboven behouden 4. Om de versie van de vooraf geïnstalleerde Bash in uw systeem te controleren, gebruikt u de commando op de Ubuntu-terminal.



$bash--versie



U moet dus enkele functies uitvoeren op bestanden en mappen. U kunt de hieronder uitgelegde opdrachten uitvoeren in elke map naar keuze. Maar om precies te zijn, het verdient de voorkeur om een ​​nieuwe map aan te maken, zodat alle bezittingen hiervan direct gemakkelijk toegankelijk zijn wanneer u deze opent.





De allereerste stap is het maken van een directory. We hebben een voorbeeldnaam genomen van de directory abc. Maak een map door de opdracht uit te voeren.

$mkdirabc



Nadat u de map hebt gemaakt, moet u nu alle opdrachten daarop uitvoeren. Schakel dus na het aanmaken van de directory over naar die directory. Gebruik de onderstaande opdracht:

$CDabc

Nadat u naar de map bent gegaan, maakt u nu enkele bestanden met behulp van de aanraakopdracht.

$aanrakenbestand1.txt

Er worden veel methoden gebruikt om een ​​bestand in Ubuntu te maken. Naast het touch-commando hebben we hier het echo-commando gebruikt om een ​​bestand te maken en de inhoud erin gezamenlijk in één commando toe te voegen:

$gooide uitLinux, ubuntu, Postgresql>bestand7.txt

Dit bestand is gemaakt in een eenvoudige map die momenteel standaard wordt uitgevoerd. Dus de naam van de nieuw gemaakte map wordt niet toegevoegd met de opdrachtprompt. U kunt ook bestanden maken door een bereik en uitbreiding te gebruiken in de aanraakopdracht.

$aanrakenhet dossier-{1..8}.tekst

Door deze opdracht te gebruiken in nieuwe bestanden van .txt-extensies worden met een enkele opdracht gemaakt.

Daarna kunt u nu door de map lopen die nieuw is gemaakt. Geef de bestandsnamen weer. Omdat we door de bestanden in de map moeten lopen, hebben we een lus nodig. Loops zijn zeer effectief in gebruik omdat ze de gegevens in minder tijd ophalen en minder invoer vereisen. Hier gebruiken we een for-lus. Door deze lus te gebruiken, wordt elke bestandsnaam op de volgende regel weergegeven.

$voor het dossier in *;doen gooide uit $bestand;gedaan

* wordt gebruikt voor alle bestanden in deze map. Hierdoor kan de 'for'-lus alle bestanden pakken. Maar om de uitvoer nauwkeurig te maken, kunt u enkele termen toevoegen met het asterisk-teken. Zo wordt 'file-*' gebruikt voor alle bestanden die met het bestand beginnen. En *.txt om de bestanden op te halen die de .txt-extensie hebben. We zullen deze voorbeelden verder in het artikel gebruiken.

Deze lus zal zo werken dat alle bestanden uit de map worden opgehaald en vervolgens alle bestanden worden weergegeven via het echo-commando. Het $-teken staat hier voor de naam van het bestand. Aan het resultaat kunt u zien dat elke bestandsnaam wordt weergegeven.

Na het verifiëren van de bestanden die zijn gemaakt door de namen van bestanden weer te geven, is het nu tijd om de waarde in de bestanden in te voeren omdat de gemaakte bestanden leeg zijn. Dit kan handmatig worden gedaan door elk bestand in de teksteditor te openen en vervolgens de gegevens te schrijven. De tweede optie is om gegevens in elk bestand in te voeren via de opdracht in de terminal. Maar het kost tijd om de gegevens in elk bestand in te voeren via een enkele opdracht voor elk bestand. Maar het kan eenvoudig en collectief worden gedaan door for loop in een enkele opdracht te gebruiken.

$voor het dossier in *;doen gooide uit -2 $bestand Linux Ubuntu> $bestand;gedaan

Na de uitvoering van de opdracht is de waarde ingevoerd in elk bestand dat we hebben gemaakt. Wanneer gebruikt met echo, zal de '-e' vlag de nieuwe regel in het bestand behouden. Om de ingevoerde gegevens te zien, kunt u navigeren naar de map 'abc'. Open nu een willekeurig tekstbestand. Het bestand is niet meer leeg.

‘$file zal de bestandsnaam als eerste in het bestand tonen, en de gegevens die je hebt ingevoerd zullen worden bekeken op de tweede regel omdat wordt gebruikt om de woorden die hierna worden gebruikt naar een andere regel te verplaatsen. U kunt ook de gegevens controleren die via de opdracht zijn ingevoerd.

$voor het dossier in *;doen kat $bestand;gedaan

Het Cat-commando wordt gebruikt om de gegevens op te halen die aanwezig zijn in alle bestanden van de map.

Zowel de procedure voor het invoeren van de gegevens als het ophalen ervan kan worden gedaan via een enkele opdracht.

$voor het dossier in *;doen gooide uit-En$bestand bash-programmering> $bestand;kat $bestand;gedaan

De eerste stap is om de gegevens in het bestand te schrijven en deze vervolgens weer te geven. Wanneer u de opdracht uitvoert, is de uitvoer als volgt:

Elk bestand bevat dezelfde waarde. Dit komt door de 'for'-lus.

We kennen de lus voor het ophalen van de gegevens en het invoegen van de waarden, enz., maar de lus wordt ook gebruikt om back-ups te maken. Deze bestanden hebben aan het einde de extensie .bak. Voer nu de back-upopdracht in de shell uit om de back-up van elk bestand te zien.

$voor het dossier in *;doen cp $bestand $bestand.achter;gedaan;

Het cp-sleutelwoord wordt gebruikt om een ​​back-up van alle bestanden te maken. Nu om de bestanden te zien waarop deze opdracht is toegepast. We gebruiken het commando als:

$ls- de

Nu is uit de uitvoer zichtbaar dat het detail van de bestanden wordt getoond. Datum, bestandsnaam, gebruikersnaam en tijdstip waarop het is verwijderd. U hebt ook een nauwkeurige kopie van elk bestand.

Als we alleen de jpeg-bestanden willen. We zullen dit gebruiken in de opdracht

$voor het dossier in *.jpeg;doen gooide uit $bestand;gedaan

Hierdoor worden alleen de namen van afbeeldingen weergegeven.

Een eenvoudige vondst kan ook dezelfde functie vervullen. Het haalt alle bestanden op met de extensie .sh.

$vind. - naam*NS

We gebruiken het trefwoord find in de for a loop.

$voor het dossier in *;doenvind. Bestand.*;gedaan

Hiermee worden alle bestanden naar de huidige map gebracht. Deze hebben extensies van .bak, .jpeg, .txt. enzovoort.

Als u nu de naam van alle directorybestanden en de gegevens erin wilt zien, wordt dit ook gedaan door de 'for'-lus.

$voor het dossier in *;doen het dossier $bestand;gedaan

Conclusie

Het is niet moeilijk meer om door de bestanden in een map te bladeren, zoals we weten, met het gebruik van loops in Bash en het uitvoeren op de Linux-besturingssystemen. Deze zelfstudie is een complete gids voor het maken, openen en uitvoeren van bewerkingen in de map met behulp van een 'for'-lus.