当我尝试仅根据存储在.txt文件中的信息打开图像时,我遇到了Bash中的一个问题.我试图按大小或高度对多个图像进行排序,并按排序顺序显示图像,但如果文件夹中没有带有相同名称的.txt文件的.jpg,则不应处理它.
我已经完成了我的情况的排序部分,并且我想弄清楚我将如何仅打开带有.txt文件的.jpg扩展名的图像.
我认为一个解决方案看起来像我将每个.jpg的名称(没有扩展名)放在一个列表中,然后处理列表并运行如下:
[if -f $filename.txt];然后~~~
但我遇到了没有for循环迭代的问题,否则所有的图片都会打开多次.我的尝试是:
for i in *jpg; do
y=$y ${i.jpg}
done
if[ -f $y.txt ] then
(sorting parts)
这只是查看y中的最后一个文件名,因为它应该,但我试图找出一种方法来查看每个单独的文件名,看看是否存在该文本文件,以便将其包含在排序中.
非常感谢你的帮助!
解决方法:
在单个变量中收集文件名列表是反模式.您想要在数组中收集它们.
a=()
for f in *.jpg; do
if [ -e "${f%.jpg}".txt ]; then
continue
fi
a+=("$f")
done
# Now do things with "${a[@]}"
通常,您并不需要在数组中收集文件 – 只需在遍历文件时执行for循环中所执行的所有操作.
(实际上y = $y ${i%.jpg}不附加到y – 它在尝试执行名为i sans the .jpg扩展名的文件期间将y设置为自身,这很可能会失败绝大多数情况.)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。