Find-Option als Befehlszeilenargument

Find-Option als Befehlszeilenargument

Ich habe ein Problem mit meinem Skript. Ich versuche, ein Skript zu schreiben, bei dem die Option für den Befehl „find“ das erste Befehlszeilenargument ist.

In meinem Skript habe ich so etwas wie

find_option=$1

find $find_option

Das Problem besteht darin, dass beispielsweise bei der Suchoption *.txtnur die erste Textdatei in meinem Verzeichnis ausgegeben wird, ich aber alle diese Dateien finden möchte.

Danke

Antwort1

Angenommen, Sie geben Ihrem Skript das Muster wie folgt,

./myscript '*.txt'

(die Anführungszeichen sind erforderlich, um eine Ausweitung des Musters auf Namen im aktuellen Verzeichnis zu vermeiden.) Anschließend können Sie Ihr Skript folgendermaßen schreiben:

#!/bin/sh

name_pattern=$1

find . -name "$name_pattern"

Dies nimmt das erste Befehlszeilenargument und verwendet es in einem Aufruf von find, wobei die im aktuellen Verzeichnis und darunter gefundenen Namen nach dem angegebenen Muster gefiltert werden.

Beachten Sie, dass Sie auch hier die Variablenerweiterung $name_patternim Aufruf von in Anführungszeichen setzen müssen, und zwar findaus demselben Grund, aus dem Sie sie in der Befehlszeile beim Aufruf Ihres Skripts in Anführungszeichen setzen mussten, d. h. um eine Erweiterung des Musters auf Namen im aktuellen Verzeichnis zu vermeiden.

verwandte Informationen