Ошибка CP (комбинированное использование с LS и GREP) - CP: невозможно stat

StackOverflow https://stackoverflow.com/questions/6814949

  •  25-10-2019
  •  | 
  •  

Вопрос

Когда я делаю LS с Grep, результатом является то, что мне нужно: список DLL, см. Ниже:

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

Но когда я попытался скопировать все эти DLL в пункт назначения.

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

Я использовал это для этого для моей предыдущей сборки Boost с помощью Cygwin, но я не знаю, почему теперь это не работает для Boost Build 1-47.

Оценить любой вход.

Это было полезно?

Решение

Вы видите список DLL, но вы не знаете, в каких каталогах они живут. Имя каталога напечатано на отдельной строке один раз и отфильтровано grep.

Вы не можете использовать ls -R для чего -либо значимого. Формат вывода слишком подруги сценарию. Использовать find вместо. Эта команда

find . -name "*.dll"

напечатает имена полных путей вашего DLL (не нужно использовать grep) Эта команда

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

скопирует файлы в .. вместо печати их имена.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top