shell 中如何用for语句同时搜索两个文件夹内的所有文件,并进行文件比较,急用,希望高手解答,谢谢 15

 我来答
百度网友5311d79
2012-12-20 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3232万
展开全部
不考虑子文件夹。

先用ls命令枚举其中一个文件夹内的所有文件(用数组记录文件名)。
cd 目录1
declare -a array=(`ls`)

然后在枚举另一个文件夹时用for循环与数组元素逐个比较。
cd 目录2
for file2 in *
do
isFound=0
for file1 in ${array[*]}
do
if [ "$file2" = "$file1" ]; then
diff -y --suppress-common-lines 目录1/$file1 目录2/$file2
isFound=1
fi
done
[ $isFound -eq 0 ] && echo "目录2下的$file2文件在目录1下不存在!"
done

当然,还有一种情况我没有处理,即目录1下的内容在目录2中不存在。
萤火虫与满天星
2012-12-20 · TA获得超过896个赞
知道小有建树答主
回答量:1256
采纳率:0%
帮助的人:943万
展开全部
for /f %%i (文件夹1) do (
for /f %%j (文件夹2) do (
findstr /ivg:%%i %%j >output.txt
)
)

不好意思上面是bat的。。
dir1=`ls -l 文件夹1|grep "^-"|awk '{print $1}'`
for file1 in $dir1
do
dir2=`ls -l 文件夹2|grep "^-"|awk '{print $1}'`
for file2 in dir2
do
diff $file1 $file2 >output.log
done
done
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whoami2099
2012-12-20 · TA获得超过175个赞
知道小有建树答主
回答量:463
采纳率:100%
帮助的人:172万
展开全部
代码中采用两个for循环就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式