Ich bin ein Anfänger in Linux und versuche, eine lange Liste von Dateien von einem Computer auf einen anderen zu senden. Die Argumentliste ist zu lang, daher verwende ich find. Ich habe jedoch Probleme beim Einrichten des Ausdrucks. Kann jemand helfen?
Folgendes würde ich normalerweise für eine kurze Argumentliste eingeben.
scp ./* phogan@computer/directory...
Hier ist, denke ich, dass dies mit find übersetzt werden könnte.
scp find . -name "*" phogan@computer/directory...
Vielleicht könnte ich Rohrleitungen verwenden? Irgendwelche Vorschläge würden helfen. Danke im Voraus.
Sie können dies mit nur einem Befehl tun
scp
.scp
:Achten Sie darauf , die einzukapseln
find
Befehl zwischen Backticks ` und nicht die einfachen Anführungszeichen ' .quelle
scp `find <path> -name <expression>` user@host:<path_where_to_copy>
-r
scp -r
dient zur Rekursion eines einzelnen (Verzeichnis-) Eintrags, nicht für mehrere Einträge (mehrere Dateien).quelle
grep -l pattern *
ich würde vorschlagen
Beachten Sie, dass bei dieser Lösung vermieden wird, dass die Dateinamen in der Befehlszeile angezeigt werden, wo sie möglicherweise als Befehlszeilenargumente interpretiert werden.
Eine andere Sache, auf die Sie achten sollten, ist, dass Dateinamen Leerzeichen enthalten können. Dies bedeutet, dass eine for-Schleife in bash möglicherweise Probleme mit einer Liste von Dateinamen hat.
quelle