我想这样的事情的所有文件:脚本循环,并从复制命令的输出
rpm -ql `rpm -qa | grep openssh-5`
此列出了在使用OpenSSH的-5 RPM安装的所有文件。
我希望所有这些文件复制到文件夹:例如:MyFolder文件
所以我试试这个:
cp ``rpm -ql `rpm -qa | grep openssh-5`` myfolder
,但它失败。 有没有什么出路,任何shell脚本等?
我想这样的事情的所有文件:脚本循环,并从复制命令的输出
rpm -ql `rpm -qa | grep openssh-5`
此列出了在使用OpenSSH的-5 RPM安装的所有文件。
我希望所有这些文件复制到文件夹:例如:MyFolder文件
所以我试试这个:
cp ``rpm -ql `rpm -qa | grep openssh-5`` myfolder
,但它失败。 有没有什么出路,任何shell脚本等?
您无法嵌套反引号。这应该工作:
cp $(rpm -ql $(rpm -qa | grep openssh-5)) myfolder
anoter方法是:
rpm -qa | grep openssh-5 | xargs -d $'\n' rpm -ql | xargs -d $'\n' cp -t myfolder
(这也处理包含空格的文件名不会换行强硬处理文件名...。)
files=${rpm -ql `rpm -qa | grep openssh-5`};
while read file do
cp $file "myfolder";
done < $files;
也许?
'$ {...}'用于参数扩展,'cp'不需要'>' – mata
尝试
rpm -qla \*openssh-5\* | while read filename; do
cp -a "$file" "$myfolder"
done
。请注意围绕变量的""
,这些变量考虑了文件名中的空白(在RPM软件包中这是非常罕见的 - 但并非不可能)。
注意,以及rpm -qla
构造使事情变得更容易。
您是否尝试将它们一个接一个地复制到循环中? – cen