/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
这假设目录都在当前目录下。如果不是,请更新您的问题以显示他们的真实位置。