Domanda

Quando faccio ls con grep, il risultato è exaxtly quello che mi serve: un elenco di DLL, vedere sotto:

$ 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
...

Ma quando ho cercato di copiare tutti coloro dll a dire la destinazione di ../, ho ottenuto gli errori e nessun file viene copiato:

$ 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
...

Ho usato essere in grado di a questo per il mio precedente costruzione spinta usando Cygwin, ma non so il motivo per cui la società non sta lavorando per costruire spinta 1-47.

apprecaite qualsiasi ingresso.

È stato utile?

Soluzione

Verrà visualizzato un elenco di DLL, ma non si sa in quale directory vivono. Il nome della directory è stampato su una riga separata, una volta, e filtrato da grep.

Non è possibile utilizzare ls -R per qualcosa di significativo. Il formato di output è troppo script ostile. Usa find invece. Questo comando

find . -name "*.dll"

stamperà i nomi di percorso completo del DLL (non è necessario l'uso grep). Questo comando

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

copierà i file .. invece di stampare i loro nomi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top