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 +
.