我有一个BASH代码,其中代码将CSV文件作为参数,即:
:~$ ./mycode.sh mycsv.csv
由mycsv.csv
处理mycode.sh
的地方。目录中有很多CSV文件,所有这些文件都需要单独处理。如何让代码遍历每个CSV文件?
答案 0 :(得分:5)
使用for
构造循环遍历.csv
个文件,并一次传递一个到脚本:
for file in *.csv; do ./mycode.sh "$file"; done
答案 1 :(得分:1)
您也可以使用find
命令: -
find . -name "*.csv" -type f -printf '%f\n' -exec ./mycode.sh {} \;
.csv
但没有前导./
mycode.sh
<强>更新: - 强>
要处理包含换行符或其他类型的空格或其他特殊字符的文件名,请使用-print0
中的find
并使用限制器''
阅读它们。同样使用bash
参数扩展,从查找命令中删除前导字符./
#!/bin/bash
find . -name "*.csv" -type f -print0 |
while IFS= read -r -d '' x; do
./mycode.sh "${x:2}"
done