Frage

Wenn ich LS mit Grep mache, ist das Ergebnis exaxisch das, was ich brauche: eine Liste von DLLs, siehe unten:

$ ls -R | grep "dll$"
boost_chrono-vc90-gd-1_47.dll
boost_chrono-vc90-mt-gd-1_47.dll
boost_chrono-vc90-1_47.dll
boost_chrono-vc90-mt-1_47.dll
boost_date_time-vc90-gd-1_47.dll
boost_date_time-vc90-mt-gd-1_47.dll
boost_date_time-vc90-1_47.dll
boost_date_time-vc90-mt-1_47.dll
boost_filesystem-vc90-gd-1_47.dll
boost_filesystem-vc90-mt-gd-1_47.dll
boost_filesystem-vc90-1_47.dll
...

Aber als ich versuchte, all diese DLL in ein Ziel zu kopieren, sagen ich ../, habe ich Fehler und keine Dateien werden kopiert:

$ cp `ls -R | grep "dll$"` ../
cp: cannot stat `boost_chrono-vc90-gd-1_47.dll': No such file or directory
cp: cannot stat `boost_chrono-vc90-mt-gd-1_47.dll': No such file or directory
cp: cannot stat `boost_chrono-vc90-1_47.dll': No such file or directory
cp: cannot stat `boost_chrono-vc90-mt-1_47.dll': No such file or directory
cp: cannot stat `boost_date_time-vc90-gd-1_47.dll': No such file or directory
cp: cannot stat `boost_date_time-vc90-mt-gd-1_47.dll': No such file or directory
cp: cannot stat `boost_date_time-vc90-1_47.dll': No such file or directory
cp: cannot stat `boost_date_time-vc90-mt-1_47.dll': No such file or directory
cp: cannot stat `boost_filesystem-vc90-gd-1_47.dll': No such file or directory
cp: cannot stat `boost_filesystem-vc90-mt-gd-1_47.dll': No such file or directory
...

Ich habe dies für meinen vorherigen Boost-Build mit Cygwin verwendet, aber ich weiß nicht, warum es jetzt nicht für Boost Build 1-47 funktioniert.

Wertaiten jeder Eingabe.

War es hilfreich?

Lösung

Sie sehen eine Liste von DLLs, aber Sie wissen nicht, in welchen Verzeichnissen sie leben. Der Verzeichnisname wird einmal in einer separaten Zeile gedruckt und durchfilteriert von grep.

Sie können nicht verwenden ls -R für alles, was Sinnvolles. Das Ausgabeformat ist zu skriptunfreundlich. Verwenden find stattdessen. Dieser Befehl

find . -name "*.dll"

Drucken Sie die vollständigen Pfadnamen Ihrer DLLs (keine Verwendung grep). Dieser Befehl

find . -name "*.dll" -exec cp {} ..

kopiert die Dateien nach .. anstatt ihre Namen zu drucken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top