Dateien in mehreren Verzeichnissen aus einer Liste in einer Datei suchen?

FreeBSD 9.2 RELEASE p2

Ich habe eine Dateifromdirs.txt. In dieser Datei befindet sich eine durch neue Zeilen getrennte Verzeichnisliste wie folgt:

/etc
/home
/home/goods/

Ich muss zuerst in allen Dateien des Verzeichnisses nach Namen wie "good" suchen oder Zeichenfolge "(NODES_'TASK ')" enthalten und dann alle diese Dateien in das Verzeichnis kopieren./tmp.

2.sh Datei chmod + x und ist 755 fromDirs.txt Datei chmod + x und ist 755

Dieser Code gibt mir Fehler

IFS=

2.sh: kann nicht geöffnet werden fromDirs.txt: Keine solche Datei oder Verzeichnis

2.sh: $ {dirs [...}: Fehlerhafte Ersetzung

Aber Datei fromDirs.txt existiert und 2.sh läuft aus dem Zuordnungsverzeichnis, außerdem versuche ich, den vollständigen Pfad anstelle von fromDirs.txt anzugeben, und es tritt derselbe Fehler auf.

Dieser Code gibt mir Fehler

FILE=fromDirs.txt
IFS='\n'
while read -r dirs
do
find "$dirs" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;
done < "$FILE"

2.sh: 6: Syntaxfehler: "done" unerwartet (erwartet "do")

Dieser Code gibt mir auch Fehler

FILENAME=fromDirs.txt

awk '{kount++;print  kount, $0}
     END{print "\nTotal " kount " lines read"}' $FILENAME

2.sh:: nicht gefunden awk: kann die Datei fromDirs.txt Source Line Number 2 nicht öffnen

So, wie man Akte Zeile für Zeile liest und tut, was ich benötige?

\n' read -d '' -r -a dirs < fromDirs.txt find "${dirs[@]}" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;

2.sh: kann nicht geöffnet werden fromDirs.txt: Keine solche Datei oder Verzeichnis

2.sh: $ {dirs [...}: Fehlerhafte Ersetzung

Aber Datei fromDirs.txt existiert und 2.sh läuft aus dem Zuordnungsverzeichnis, außerdem versuche ich, den vollständigen Pfad anstelle von fromDirs.txt anzugeben, und es tritt derselbe Fehler auf.

Dieser Code gibt mir Fehler

FILE=fromDirs.txt
IFS='\n'
while read -r dirs
do
find "$dirs" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;
done < "$FILE"

2.sh: 6: Syntaxfehler: "done" unerwartet (erwartet "do")

Dieser Code gibt mir auch Fehler

FILENAME=fromDirs.txt

awk '{kount++;print  kount, $0}
     END{print "\nTotal " kount " lines read"}' $FILENAME

2.sh:: nicht gefunden awk: kann die Datei fromDirs.txt Source Line Number 2 nicht öffnen

So, wie man Akte Zeile für Zeile liest und tut, was ich benötige?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage