bash 脚本列出目录中的文件

bash scripts list files in a directory

我正在编写一个脚本,它接受一个目录参数。
我希望能够用该目录中具有特定扩展名的所有文件构建 list/array 并削减它们的扩展名。 例如,如果我的目录包含:

我正在搜索 *.xx 。
我的 list/array 将是:aaa ccc。
我正在尝试使用此线程中的代码 example the accepted answer 。

set tests_list=[]

for f in /*.bpt
do
   echo $f
   if [[ ! -f "$f" ]]
   then
      continue
   fi
   set tmp=echo $f | cut -d"." -f1
   #echo $tmp
   tests_list+=$tmp                                                         
done

echo ${tests_list[@]}

如果我 运行 这个脚本我得到循环只用 $f 执行一次是 tests_list=[]/*.bpt 这很奇怪因为 $f 应该是一个文件名该目录,并回显空字符串。
我验证了我在正确的目录中,并且参数目录中有扩展名为 .bpt 的文件。

filear=($(find path/ -name "*\.xx"))
filears=()
for f in ${filear[@]}; do filears[${#filears[@]}]=${f%\.*}; done 

这应该适合你:

for file in *.xx ; do echo "${file%.*}" ; done

将其扩展为将参数作为目录的脚本:

#!/bin/bash

dir=""
ext='xx'

for file in "$dir"/*."$ext"
do
    echo "${file%.*}"
done

编辑:将 ls 切换为 for - 感谢@tripleee 的更正。