BASH-文件名中的任何字符替换

BASH-文件名中的任何字符替换,bash,Bash,我有一些档案。模式如下所示: FILE_1.TXT FILE_2.TXT FILE_3.TXT for file in FILE_*.TXT do # doing some stuff with the files done 现在我有一个循环,我想对这些文件做些什么。出于某种原因(这个原因对于这个问题并不重要),我必须运行循环,而不是通过*.TXT,而是通过FILE.*.TXT——文件名中只有一件事情在改变,那就是编号文件*.TXT不起作用,Bash正在查找文件*.TXT不查

我有一些档案。模式如下所示:

FILE_1.TXT
FILE_2.TXT
FILE_3.TXT
for file in FILE_*.TXT
    do
# doing some stuff with the files
    done
现在我有一个循环,我想对这些文件做些什么。出于某种原因(这个原因对于这个问题并不重要),我必须运行循环,而不是通过
*.TXT
,而是通过
FILE.*.TXT
——文件名中只有一件事情在改变,那就是编号<代码>文件*.TXT不起作用,Bash正在查找
文件*.TXT
不查找
文件*.1.TXT

我使用的代码如下所示:

FILE_1.TXT
FILE_2.TXT
FILE_3.TXT
for file in FILE_*.TXT
    do
# doing some stuff with the files
    done

我如何才能使其工作?

从该循环中获得
文件*.TXT
的唯一方法是,如果这些文件实际上不存在:


因此,我建议您仔细查看这些模式,确保这些文件确实存在。

一切正常:

$ ls
FILE_1.TXT  FILE_2.TXT  FILE_3.TXT
$ for f in FILE_*.TXT
do
  echo $f
done
FILE_1.TXT
FILE_2.TXT
FILE_3.TXT
提示:
文件
是一个现有工具:

$ file
Usage: file [-bchikLlNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]

使用不同的变量名,例如
f

,正如paxdiablo已经提到的,您没有任何与模式匹配的文件。
您可以设置一个名为
nullglob

$ for x in *.doesnotexist; do echo $x; done
*.doesnotexist

$ shopt -s nullglob

$ for x in *.doesnotexist; do echo $x; done
$ (Nothing is printed, the loop does not run.)

也许如果你分享你的代码到目前为止,有人会告诉你你在做什么wrong@MattCoubrough-我已经更新了这个问题,我非常确定
bash
可以区分可执行文件和变量名:-)当然可以。但为了避免混淆,我建议不要对名称进行阴影处理。似乎我犯了一个错误——这些文件是由循环中的其他命令找到的。唯一不能看到真实文件名的命令是,
file.*.TXT
不存在-是<代码>标题-
标题:“文件*.TXT”无法打开读取:未找到文件或目录