簡體   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