bash脚本-迭代目录中无扩展名的文件列表
我想在bash脚本中迭代目录中的所有文件bash脚本-迭代目录中无扩展名的文件列表,bash,Bash,我想在bash脚本中迭代目录中的所有文件 列出扩展名为.LOG.txt.MAP.TL9的所有文件* 列出所有没有扩展名的文件 我正在尝试: 用于*{LOG,txt,MAP,TL9*}中的文件;执行 我想列出仅以上述扩展名结尾的文件。 因此,我不想列出一个文件:temp.txt.EXT,因为它不以上述给定的扩展名结尾。类似地,我不希望报告temp.TL94.JPG或temp.TL9.JPG 但是在上面的for循环中,如何插入给我文件没有扩展名的检查 请提供帮助。使用extglob,您可以执行以下操
用于*{LOG,txt,MAP,TL9*}中的文件;执行
我想列出仅以上述扩展名结尾的文件。
因此,我不想列出一个文件:temp.txt.EXT,因为它不以上述给定的扩展名结尾。类似地,我不希望报告temp.TL94.JPG或temp.TL9.JPG
但是在上面的for循环中,如何插入给我文件没有扩展名的检查
请提供帮助。使用
extglob
,您可以执行以下操作:
shopt -s nullglob
shopt -s extglob
for file in @(!(*.*)|*.@(csv|LOG|TL9!(*.*))); do
echo "$file"
done
使用
extglob
:
*.@(LOG|txt|MAP|TL9) !(*.*)
匹配所有*。@(LOG | txt | MAP | TL9)
、.LOG
、txt
和.MAP
文件.TL9
匹配所有文件,但名称中包含!(*.*)
的文件除外
shopt -s extglob
您还可以使用
find
命令列出扩展名为MAP
、LOG
、TL9
或根本没有任何扩展名的文件
#!/bin/bash
files=`find . -type f -regex ".*[\.LOG|\.MAP|\.TL9]" -o ! -name "*.*"`
for file in $files
do
echo $file
done
对但我用的是这个。@(LOG | txt | MAP | TL9)!(*)它与我的glob表达式(我之前发布过)完全相同,但分解为两个单独的glob。它向我显示Name.LOG.TMP之类的文件(因为我认为它中间有.LOG)。但我不知道这个文件。我希望所有的文件都以LOG | txt | MAP | TL9*结尾,仅限@anubhavath,这是不正确的。它不会列出
Name.LOG.TMP
。它将只列出以.LOG
My bad结尾的文件。我给错了文件名。它向我显示了这个文件名.TL98.JPG,尽管我不想要它,因为它没有以.TL9*@anubhava“@”结尾,在脚本中不起作用。我不得不使用“+”。它向我显示像Name.LOG.TMP这样的文件(因为我认为它中间有.LOG)。但我不知道这个文件。我希望所有文件都以LOG | txt | MAP | TL9*结尾only@PuneetJain为我工作很好。你在参加舞会吗?我的错。我给错了文件名。它向我显示了这个文件名.TL98.JPG,尽管我不希望它以.TL9*@heemayl结尾