先用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中不存在。
此效果可以通过枚举文件,配合“读入文件 ()”和数组 *** 作来实现。
代码如下:
.版本 2.程序集 窗口程序集_启动窗口
.程序集变量 当前位置, 整数型
.程序集变量 文件列表, 文本型, , "0"
.子程序 __启动窗口_创建完毕
枚举文件 (取运行目录 () + “\”, “.jpg”, 文件列表)
.如果真 (取数组成员数 (文件列表) > 0)
当前位置 = 1
图片框1.图片 = 读入文件 (文件列表 [1])
.如果真结束
.如果真 (取数组成员数 (文件列表) > 1)
按钮_下一张.禁止 = 假
.如果真结束
.子程序 _按钮_上一张_被单击做罩
当前位置 = 当前位置 - 1
图片框1.图片 = 读入文件 (文件列表 [当前位置])
.如果 (当前位置 ≤ 1)
按钮_上一张.禁止 = 真
.否则
按钮_上一张.禁止 = 假
按钮_下一张.禁止 = 假
.如果结束
.子程序 _按钮_下一张_被单击
当前位置 = 当前位置 + 1
图片框1.图片 = 读入文件 (文件列表 [当前位置])
.如果 (当前禅胡蚂位置 ≥ 取数组成员数 (文件列表))
按钮_下一张.禁止 = 真
.否则
按贺埋钮_上一张.禁止 = 假
按钮_下一张.禁止 = 假
.如果结束
.子程序 枚举文件
.参数 欲枚举文件的目录, 文本型, , 将要被枚举文件的目录。
.参数 欲枚举的文件后缀名, 文本型, 可空, 请输入如“.bmp”“.mp3”的后缀名。
.参数 欲保存结果的变量, 文本型, 参考 数组, 保存结果的文本型数组。
.局部变量 临_目录, 文本型
.局部变量 临_文件, 文本型
.局部变量 i, 整数型, 静态
' 枚举目录
重定义数组 (欲保存结果的变量, 假, 0)
临_目录 = 寻找文件 (欲枚举文件的目录 + “*”, #子目录) ' 第一次寻找要提供相应条件
.判断循环首 (临_目录 ≠ “”) ' 只要找到的结果不为空 则继续寻找
.如果真 (临_目录 ≠ “.” 且 临_目录 ≠ “..”)
枚举文件 (欲枚举文件的目录 + 临_目录 + “\”, 欲枚举的文件后缀名, 欲保存结果的变量)
.如果真结束
临_目录 = 寻找文件 (, #子目录) ' 之后 系统会默认使用最近一次提供的条件 进行寻找下一个结果,所以这里只需要指定寻找对象:#子目录
.判断循环尾 ()
' 枚举文件
临_文件 = 寻找文件 (欲枚举文件的目录 + “*” + 欲枚举的文件后缀名, ) ' 第一次寻找要提供相应条件
.判断循环首 (临_文件 ≠ “”) ' 只要找到的结果不为空 则继续寻找
临_文件 = 欲枚举文件的目录 + 临_目录 + 临_文件 ' 文件全路径=目录+文件名+后缀名
加入成员 (欲保存结果的变量, 临_文件)
临_文件 = 寻找文件 (, )
.判断循环尾 ()
在程序中,演示效果如下:
此段代码即符合你的要求。
源码已附在下面。
如有疑问请追问。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)