1

我正在尝试这样的事情:

rpm -ql `rpm -qa | grep openssh-5`

这列出了使用 openssh-5 rpm 安装的所有文件。

我希望将所有这些文件复制到一个文件夹:例如:myfolder

所以我试试这个:

cp ``rpm -ql `rpm -qa | grep openssh-5`` myfolder

但它失败了。有什么出路,任何shell脚本吗?

4

3 回答 3

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

(这也处理包含空格的文件名。不会处理带有换行符的文件名...)

于 2012-05-21T07:59:15.480 回答
0
files=${rpm -ql `rpm -qa | grep openssh-5`};

while read file do
    cp $file "myfolder";
done < $files;

也许?

于 2012-05-21T08:01:30.350 回答
0

尝试

rpm -qla \*openssh-5\* | while read filename; do
    cp -a "$file" "$myfolder"
done

. 请注意""考虑文件名中空格的变量周围的变量(诚然,这在 RPM 包中非常罕见 - 但并非不可能)。

还要注意rpm -qla使事情变得更容易的结构。

于 2012-05-21T08:23:08.847 回答