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