【发布时间】:2020-09-25 16:08:15
【问题描述】:
如果目录具有扩展名文件:jpg、jpeg 或 png,我正在编写一个 bash 脚本来执行某些操作。但是当我尝试使用 for 或 while 循环检查这一点时,我搞砸了。
while [ filename in $IMAGE_DIR/*.jp*g -o filename in $IMAGE_DIR/*.png ] ; do
# do something here
但我收到编译错误:
第 30 行:[:参数过多
我尝试了以下循环无济于事。
for (filename in $IMAGE_DIR/*.jp*g) || (filename in $IMAGE_DIR/*.png); do
while [ filename in $IMAGE_DIR/*.jp*g ] || [ filename in $IMAGE_DIR/*.png ] ; do
while [[ filename in $IMAGE_DIR/*.jp*g ]] || [[ filename in $IMAGE_DIR/*.png ]] ; do
while [[ filename in $IMAGE_DIR/*.jp*g ] || [ filename in $IMAGE_DIR/*.png ]] ; do
while (( filename in $IMAGE_DIR/*.jp*g )) || (( filename in $IMAGE_DIR/*.png )) ; do
while ( filename in $IMAGE_DIR/*.jp*g )) || (( filename in $IMAGE_DIR/*.png ) ; do
我在这里错过了什么?
【问题讨论】:
-
你为什么不
do_something *.jpg *.jpeg *.png如果没有,你就什么都不做。或者使用find -name "*.jpeg"或您想要的任何其他模式作为他们的名字,并将xargs他们用于您的工作。没有理由检查所有文件名,shell 用一个命令或一个 glob 为您提供这些文件。 -
您想要
do something if the directory has files of extensions还是想要迭代这些文件?如果这是 stackoverflow.com/questions/6363441/… 的副本? -
@KamilCuk:只想遍历这些文件。
标签: bash loops conditional-statements