Ошибка CP (комбинированное использование с LS и GREP) - CP: невозможно stat
Вопрос
Когда я делаю 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 {} ..
скопирует файлы в ..
вместо печати их имена.