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?