linux - bash - 基于文件名的子字符串运行脚本(可能使用通配符)

标签 linux bash shell unix scripting

我有下面的简单脚本,它调用一个外部脚本,其中包含许多文件名和定界符或一组剪切位置的参数。我的问题:有没有办法使文件名“使用通配符动态”,因为目录将始终包含这些文件名,但两端都有额外的文本?但是脚本可以进行某种匹配以根据“包含”获取完整文件名。

当前/release/ext/目录内容:

2011storesblah.dat
hrlatest.dat
emp_new12.txt

即该目录今天包含这些文件(但下周该目录中的文件名可能有一个略有不同的前缀。 例如:

stores_newer.dat
finandhr.dat
emps.txt

脚本:

 #!/bin/bash
    FILES='/release/ext/stores.dat "|"
    /release/ext/emp.txt 1-3 4-11 15-40
    /release/ext/hr.dat "|" 2'
    for f in $FILES
    do
        echo `sh myexternalscript.sh $f`;
    done

注意:无需处理脚本中的文件与目录中的 2 个以上文件匹配的情况(它始终只匹配一个)。 此外,它只能匹配脚本中指定的文件类型。 另外,我不需要递归搜索,只需要查看/release/ext/目录即可。 我正在运行 SunOS 5.10。

最佳答案

$FILES=`find /release/ext -name *stores*.dat`
for FILE in $FILES do
  # need to test for empty, case $FILES is empty
  test -n "$FILE" && /do/whatever/you/want
done;

关于linux - bash - 基于文件名的子字符串运行脚本(可能使用通配符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8770369/

相关文章:

json - 使用 bash 读取 package.json 文件的 name 属性

sql - 将sql查询的输出分配给unix中的变量

c++ - 从 Linux OMI (omicli) 到 Windows WMI 的连接失败并出现 DMTF 相关错误

php - 如何实现单处理模式运行php脚本?

linux - fork 和 execve 继承非特权父进程的能力

regex - 如何从 bash 脚本关闭所有不运行任何内容或 iPython 的终端

linux - Shell 脚本 - Linux

linux - 使用 Linux 搜索字符串并以不同的顺序打印该行

c++ - 如何在 Linux 的 makefile 中使用 headerfile(.h) 文件中定义的宏定义

windows - 适用于 Windows 和 Linux 的 Delphi