【发布时间】:2016-05-24 11:20:44
【问题描述】:
我还有一个在这个论坛找不到的小问题。
我有一个名为 Contacts 的目录,其中包含文件。每个文件都有相同的格式名称:name_secondname.ct
但在我的目录中,我可以拥有多个同名文件。 一个例子:
mario_winans.ct
mario_winans1.ct
mario_winans2.ct
我有一个 shell 脚本:
j=0
FILES=/home/accounts/studenti/id913usr/Scrivania/Contacts/*
nome_file="mario_winans"
for f in $FILES ; do
filename=${f##*/}
if [[ "$nome_file(anything or any number).ct" == "$filename" ]] ; then
(( j++ ))
fi
done
nome_file="mario_winans$j"
echo $nome_file
获取目录的路径,将名称保存到名为 nome_file 的变量中,遍历目录的文件,在每次迭代时获取文件名(将其放在名为 filename 的 var 中)并将 nome_file 与文件名进行比较。因为目录可以包含最后编号的相同名称的文件(例如:mario_winans2.ct)我只想比较名称,如果两个名称相等,我想增加一个计数器(在我的情况下为 j)并创建一个名称以 j 结尾的新变量。
在我的示例中,请记住,在我拥有的目录中
mario_winans.ct
mario_winans1.ct
mario_winans2.ct
变量名文件包含“mario_winans”
脚本将 nome_file 与 mario_winans.ct 比较,j 增加到 1,然后将 nome_file 与 mario_winans1.ct 比较,j 增加到 2,然后将 nome_file 与 mario_winans2.ct 比较,j 增加到 3
在循环外我修改了我的变量 nome_file ("mario_winans") 在末尾添加 j (nome_file="mario_winans$j")
这就是它的工作原理。 我的 if 条件有问题。部分(任何东西或任何数字)是问题所在。我只想比较两个名称而不是最后的数字,但我不知道如何在字符串中说出“任何东西或任何数字”
我希望已经清楚了。
【问题讨论】:
-
您使用的是什么风格或正则表达式? javascript? c# ?
标签: regex string numbers compare conditional-statements