仅作用于 .pcap 文件的目录循环的正确方法

仅作用于 .pcap 文件的目录循环的正确方法

在 bash 中对仅匹配 .pcap 文件的文件目录执行嵌套 for 循环是否合法?

ROOTFILEPATH = '/a/path'
FILEEXT = '.pcap'
for file in $ROOTFILEPATH
for $FILEEXT in file; do
    #do something
done

谢谢。

答案1

无需嵌套循环,您可以告诉第一个循环仅作用于*.pcap文件。

#! /bin/bash -

for CUR_FILE in "/PATH/TO/DIR/"*.pcap; do
    echo "$CUR_FILE"
done

答案2

要循环遍历目录,仅选择给定的扩展名,其中目录和扩展名都是变量:

rootfilepath='/a/path'
fileext='.pcap'
for file in "$rootfilepath"/*"$fileext"
do
  : something with "$file"
done

我对你原来的内容做了一些修改:

  • 小写变量名。只是一个约定;它有助于避免多个名称全部大写的内置变量。
  • 删除了变量赋值周围的空格;否则,变量名称本身将被视为带有两个参数来执行的命令:等号和剩余的变量值。
  • do在循环中添加了一个缺失值
  • 在目录和文件扩展名之间使用 shell 通配符 ( *) 来获取该路径中具有该扩展名的所有文件

相关内容