[英]Bash scripting: Checking multiple file conditions in loop
如果目录具有扩展名文件: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
我在这里缺少什么?
这是我认为迭代多个“类型|扩展名”文件更容易的方式。 我希望您知道如何继续,您可以在该 for 循环中创建 if 条件。
$ ls -l
-rw-rw-r-- 1 lucas lucas 0 Sep 25 13:58 test.jpeg
-rw-rw-r-- 1 lucas lucas 0 Sep 25 13:58 test.jpg
-rw-rw-r-- 1 lucas lucas 0 Sep 25 13:58 test.png
-rwxrwxr-x 1 lucas lucas 62 Sep 25 13:59 test.sh
$ cat test.sh
#!/bin/bash
for i in *.jpg *jpeg *.png; do
echo "hi $i"
done
$ ./test.sh
hi test.jpg
hi test.jpeg
hi test.png
您使用的是readarray
而不是“.txt”,只需放置您想要的任何扩展名。
readarray FILES <<< "$(find . -name "*.txt")";
for file in ${FILES[@]}; do
echo $file
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.