linux - 如何使用 while 循环仅读取特定模式的文件名

标签 linux shell unix ksh

假设我在特定目录中有以下文件。

ABC_TEXT_FILE_365.csv
ABC_TEXT_FILE_365_07h32.csv
BCD_TEXT_FILE_432.csv
BCD_TEXT_FILE_432_08h28.csv
FGB_TEXT_FILE_567.csv
FGB_TEXT_FILE_567_09h45.csv

现在我只想读取其中包含 h*.csv 模式的文件,然后执行更多操作。

但我知道在读取文件名时
将读取所有文件名仪式。?有没有解决方法。请帮忙

最佳答案

我猜你的意思是所有匹配 *h*.csv 的文件,在这种情况下你可能想使用这样的 for 循环:

for i in *h*.csv; do 
    while read line; do 
        # do some stuff, e.g. echo "$line"
    done < "$i"
done

如果您可能有任何与该模式匹配的目录,您可能还想添加一个测试以确保循环中的每个项目都是一个文件。那将是:

for i in *h*.csv; do 
    if [ -f "$i" ]; then 
        while read line; do 
            echo "$line" 
        done < "$i"
    fi
done

关于linux - 如何使用 while 循环仅读取特定模式的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25091512/

相关文章:

linux - 无法使用 kill -9 杀死僵尸进程

linux - 从 Linux 在 Windows 上进行 FTP 并执行 shell 脚本

linux - 打开和编辑文件对另一个文件也有效

java - 从java运行grep命令后获取错误

linux - 如何就地对文件进行排序?

c++ - 如何在 C++ 中设置文件权限(跨平台)?

linux - 如何从Alpine Linux中删除ping程序?

linux - REG QUERY 名称中有空格的键

linux - Sed:在随机文本之前插入文本

linux - 对于两个连续的选项, `getopts` 将第二个选项作为第一个选项的参数