【发布时间】:2014-05-27 16:14:22
【问题描述】:
我创建了一个脚本,它将比较不同目录中的两个文件(rpms 和newrpms)。这两个目录由文件组成。在rpms/ 一侧是旧版本文件,在newrpms/ 是更新版本。所以在这个脚本中,主要目标是比较目录中的文件,如果有相同名称的文件,删除旧的文件并用更新的文件替换它。
rpms/ -- 该目录下的文件
firefox-24.5.0-1.el5_10.i386.rpm
firefox-24.5.0-1.el5_10.x86_64.rpm
java-1.6.0-openjdk-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.6.0-openjdk-demo-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.6.0-openjdk-devel-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.6.0-openjdk-javadoc-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.6.0-openjdk-src-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.7.0-openjdk-1.7.0.55-2.4.7.1.el5_10.x86_64.rpm
java-1.7.0-openjdk-debuginfo-1.7.0.55-2.4.7.1.el5_10.x86_64.rpm
java-1.7.0-openjdk-devel-1.7.0.55-2.4.7.1.el5_10.x86_64.rpm
java-1.7.0-openjdk-javadoc-1.7.0.55-2.4.7.1.el5_10.x86_64.rpm
newrpms/ -- rpms/目录下需要替换旧文件的更新文件
firefox-25.5.0-1.el5_10.i386.rpm
firefox-25.5.0-1.el5_10.x86_64.rpm
java-1.6.0-openjdk-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.6.0-openjdk-demo-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.6.0-openjdk-devel-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.6.0-openjdk-javadoc-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
java-1.6.0-openjdk-src-1.6.0.0-5.1.13.3.el5_10.x86_64.rpm
请看下面的脚本。
for i in $(\ls -d ./rpms/*);
do diff ${i} newrpms/;
done
对于上面的代码,没有任何反应。谁能帮我解决我的问题。我想要的只是比较两个目录并获得相同的文件,当且仅当rpms/ 目录中没有与newrpms/ 相同的文件时,将其从newrpms/ 移动到rpms/ nad 如果它们具有相同的文件名但只有一小部分不一样。检查它是最新的。
例如。
firefox-24.5.0-1.el5_10.i386.rpm --> in the rpms/
firefox-25.5.0-1.el5_10.i386.rpm --> in the newrpms/
所以最新的一个在newrpms/。删除rpms/ 中的firefox-24.5.0-1.el5_10.i386.rpm 并将firefox-25.5.0-1.el5_10.i386.rpm 移动到rpms/
【问题讨论】: