我正在编写一个带有参数的脚本,该参数是一个目录 我希望能够构建包含该目录中具有特定扩展名的所有文件的列表/数组并切断其扩展名。 例如,如果我的目录包含:
即时搜索* .xx。
我的列表/数组将是:aaa ccc。
我尝试使用此线程中的代码example接受的答案。
set tests_list=[]
for f in $1/*.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。
答案 0 :(得分:2)
这应该适合你:
for file in *.xx ; do echo "${file%.*}" ; done
将此扩展为将参数作为目录的脚本:
#!/bin/bash
dir="$1"
ext='xx'
for file in "$dir"/*."$ext"
do
echo "${file%.*}"
done
编辑:用ls
切换for
- 感谢@tripleee进行更正。
答案 1 :(得分:1)
filear=($(find path/ -name "*\.xx"))
filears=()
for f in ${filear[@]}; do filears[${#filears[@]}]=${f%\.*}; done