shell编程如何迅速枚举

shell编程如何迅速枚举,第1张

while getopts ":l:c:" optdocase $opt inl) dict_length=$OPTARG c) dict_char=$OPTARG \?) echo '悔禅Usage: dict.sh -l dict_length -c "dict_char"'碧芹尘exit 1 esacdoneshift $(($OPTIND - 1)) #根据字典首旦的长度产生单词,象这样:${pi}${pi-1}.....${p1}key_str(){for((i=$1i!=0i--))dopswd=$pswd\${p$i}done} #用字典替换${pi}char_sub(){idx=$1for char in $dict_chardoeval p${idx}=$charif [ $idx -gt 1 ]then((--idx))char_sub $idx((++idx))continuefieval echo $pswddone}

不考虑子文件夹。

先用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)

临_目录 = 寻找文件 (欲枚举文件的目录 + “*”, #子目录)  ' 第一次寻找要提供相应条件

.判断循环首 (临_目录 ≠ “”)  ' 只要找到的结果不为空 则继续寻找

    .如果真 (临_目录 ≠ “.” 且 临_目录 ≠ “..”)

        枚举文件 (欲枚举文件的目录 + 临_目录 + “\”, 欲枚举的文件后缀名, 欲保存结果的变量)

    .如果真结束

    临_目录 = 寻找文件 (, #子目录)  ' 之后 系统会默认使用最近一次提供的条件 进行寻找下一个结果,所以这里只需要指定寻找对象:#子目录

.判断循环尾 ()

' 枚举文件

临_文件 = 寻找文件 (欲枚举文件的目录 + “*” + 欲枚举的文件后缀名, )  ' 第一次寻找要提供相应条件

.判断循环首 (临_文件 ≠ “”)  ' 只要找到的结果不为空 则继续寻找

    临_文件 = 欲枚举文件的目录 + 临_目录 + 临_文件  ' 文件全路径=目录+文件名+后缀名

    加入成员 (欲保存结果的变量, 临_文件)

    临_文件 = 寻找文件 (, )

.判断循环尾 ()

在程序中,演示效果如下:

此段代码即符合你的要求。

源码已附在下面。

如有疑问请追问。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12300653.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存