bash 脚本列出目录中的文件
bash scripts list files in a directory
我正在编写一个脚本,它接受一个目录参数。
我希望能够用该目录中具有特定扩展名的所有文件构建 list/array 并削减它们的扩展名。
例如,如果我的目录包含:
- aaa.xx
- bbb.yy
- ccc.xx
我正在搜索 *.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 的更正。
我正在编写一个脚本,它接受一个目录参数。
我希望能够用该目录中具有特定扩展名的所有文件构建 list/array 并削减它们的扩展名。
例如,如果我的目录包含:
- aaa.xx
- bbb.yy
- ccc.xx
我正在搜索 *.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 的更正。