linux – bash – 仅在存在相应的文本文件时打开图像
发布时间:2020-12-13 23:28:47 所属栏目:Linux 来源:网络整理
导读:当我尝试仅根据存储在.txt文件中的信息打开图像时,我遇到了 Bash中的一个问题.我试图按大小或高度对多个图像进行排序,并按排序顺序显示图像,但如果文件夹中没有带有相同名称的.txt文件的.jpg,则不应处理它. 我已经完成了我的情况的排序部分,并且我想弄清楚我
当我尝试仅根据存储在.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设置为自身,这很可能会失败绝大多数情况.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |