find -exec-Befehl in der Bash ausführen

Aashish Sunuwar 24 März 2022
find -exec-Befehl in der Bash ausführen

In diesem Artikel wird erläutert, wie Sie den Parameter -exec des Befehls find verwenden, um mit dem Befehl find einen beliebigen Text in einer Datei zu finden.

Verwenden Sie den Befehl find, um Dateien in Bash zu suchen

Ein find-Befehl ist ein nützliches Werkzeug zum Suchen und Auswählen von Dateien in der Bash. Wir verwenden den Befehl find mit einigen Ausdrücken und Aktionen.

Beispiel:

find ./folder -name *.txt

Wir verwenden den Befehl find mit einem Suchort, z. B. ./folder für das Verzeichnis folder und seine Unterverzeichnisse. Und der Ausdruck -name *.txt soll jede .txt-Datei am Speicherort finden.

Verwenden Sie die Option -exec mit dem Befehl find, um Dateien in Bash zu suchen

Wir können die Aktion -exec verwenden, um Befehle für die Dateien auszuführen, die vom Befehl find mit dem Befehl find gefunden wurden.

Beispiel:

find ./folder -name *.txt -exec file {} +

Ausgabe:

./folder/hello.txt: ASCII text, with no line terminators

Die Aktion -exec führt den Befehl file aus und zeigt den vom Befehl find zurückgegebenen Dateityp an.

Verwenden Sie den Befehl find -exec, um in Bash nach einem bestimmten Text zu suchen

Wir können den Befehl find mit der Option -exec verwenden, um die Dateien zu finden, die den zu durchsuchenden Text enthalten.

Das Hauptkonzept besteht darin, den Befehl find zu verwenden, um jede Datei im Arbeitsverzeichnis zu finden, und den Befehl grep auszuführen, um den Text in jeder Datei zu finden.

Beispiel:

# !/bin/bash
find . -exec grep linux {} \;

Der folgende Befehl gibt die Zeilen zurück, in denen der angegebene text gefunden wird.

Ausgabe:

find . -exec grep linux {} \;
find . -exec grep linux {} +
title = "Unzip .gz file in linux"
description = "How to unzip a .gz file in linux"

Um zu verhindern, dass die Shell das ; interpretiert Trennzeichen verwenden wir \ davor. Mit dieser Strategie erhalten wir nur die Zeilen, in denen Text erkannt wurde.

Wir können die Zeilen sowie den Dateinamen erhalten, in dem es gefunden wurde, indem wir das Trennzeichen ; mit einem +.

# !/bin/bash
find . -exec grep linux {} +

Ausgabe:

./bash.sh:find . -exec grep linux {} \;
./bash.sh:find . -exec grep linux {} +
./unzip_gz_linux.txt:title = "Unzip .gz file in linux"
./unzip_gz_linux.txt:description = "How to unzip a .gz file in linux"

Die Art und Weise, wie find mit den Ausdrucksergebnissen umgeht, wird durch das Trennzeichen bestimmt. Der Befehl -exec wird für jedes Ergebnis unabhängig wiederholt, wenn wir das Semikolon ; verwenden.

Wenn wir das Zeichen + verwenden, werden alle Ergebnisse der Ausdrücke verkettet und dem Befehl -exec zur Verfügung gestellt, der nur einmal ausgeführt wird. Aus Leistungsgründen bevorzugen wir das Trennzeichen +.

Verwandter Artikel - Bash Find