我正在尝试这样的事情:
rpm -ql `rpm -qa | grep openssh-5`
列出使用openssh-5 rpm安装的所有文件。
我希望将所有这些文件复制到一个文件夹中:例如:myfolder
所以我试试这个:
cp ``rpm -ql `rpm -qa | grep openssh-5`` myfolder
但它失败了。 有没有出路,任何shell脚本都是这样的?
答案 0 :(得分:4)
你不能嵌套反引号。这应该有效:
cp $(rpm -ql $(rpm -qa | grep openssh-5)) myfolder
另一种方式是:
rpm -qa | grep openssh-5 | xargs -d $'\n' rpm -ql | xargs -d $'\n' cp -t myfolder
(这也处理包含空格的文件名。不会处理带有换行符的文件名...)
答案 1 :(得分:0)
files=${rpm -ql `rpm -qa | grep openssh-5`};
while read file do
cp $file "myfolder";
done < $files;
可能?
答案 2 :(得分:0)
尝试
rpm -qla \*openssh-5\* | while read filename; do
cp -a "$file" "$myfolder"
done
。请注意变量周围的""
,这些变量考虑了文件名中的空格(在RPM包中这是非常罕见的 - 但并非不可能)。
同时注意rpm -qla
构造,使事情变得更容易。