如何单独打开给定目录中的文件?

时间:2016-06-14 04:55:08

标签: bash

我有一个BASH代码,其中代码将CSV文件作为参数,即:

:~$ ./mycode.sh mycsv.csv

mycsv.csv处理mycode.sh的地方。目录中有很多CSV文件,所有这些文件都需要单独处理。如何让代码遍历每个CSV文件?

2 个答案:

答案 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