繁体   English   中英

Bash脚本:循环浏览文件夹中的多个文件扩展名,而忽略不存在的文件扩展名

[英]Bash script: Looping through multiple file extensions in folder, ignoring file extensions that don't exist

我有一个图片目录,其中可以包含jpeg,jpg和png文件。 我想在bash脚本中循环浏览它们。 该目录可能不包含任何png文件,jpeg文件或jpg文件。 如果文件扩展名不存在,我的脚本将显示错误。 如何忽略这些?

for file in *.{jpg,jpeg,png} ; do
 echo $file

您可以检查文件是否存在:

for file in *.{jpg,jpeg,png}; do
  [ -e "$file" ] || continue
  # Here "$file" exists
done

您还可以使用shopt -s nullglob来避免扩展到不存在的文件:

shopt -s nullglob
for file in *.{jpg,jpeg,png}; do
  # Here "$file" exists
done

您可以设置nullglob选项,该选项将导致没有匹配项的通配符扩展为空列表,而不是扩展为自身。

shopt -s nullglob
for file in *.{jpg,jpeg,png}; do

您也可以使用扩展模式。

shopt -s extglob nullglob
for file in *.@(jpg|jpeg|png); do
    echo "$file"
done

*.{jpg,jpeg,png}首先扩展为*.jpg *.jpeg *.png ; 然后,这三种模式中的每一种都会进行路径名扩展。 *.@(jpg|jpeg|png)是经过路径名扩展的单个模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM