当且仅当目录包含 .csv 文件时,如何循环遍历目录中的每个文件?

当且仅当目录包含 .csv 文件时,如何循环遍历目录中的每个文件?
/dir1/--$ ls
1.txt 2.ssl.txt

如果dir1目录中有给定的文件,则仅循环处理.csv中列出的文件。.csv

这里由于dir1中没有列出任何文件.csv,因此不必进入循环。

答案1

用这个:

find dir1/ -maxdepth 1 -type f -iname "*.csv" -print0 | while IFS= read -r -d '' f; do
  # process file
  echo "$f"
done
  • find-type f仅在其子目录 ( ) 中搜索以 ( ) 结尾的文件.csv( -iname "*.csv"),而不dir1在其子目录 ( -maxdepth 1) 中搜索。文件名以空字符 ( -print0) 分隔打印,以应对特殊文件名。
  • while循环读取由空字符分隔的输入,并将文件名存储在名为 的变量中$f

答案2

for csvfile in */*.csv
do
    echo "Processing $csvfile"
done

这假设目录都在当前目录下。如果不是,请更新您的问题以显示他们的真实位置。

相关内容