我正在尝试在文件名与某个模式匹配的文件夹中选择第n个文件:
我尝试过用sed:例如, sed -n 3p / path / to / files / pattern .txt
但它似乎返回第一个匹配文件的第3行。
我也试过了
sed -n 3p ls /path/to/files/*pattern*.txt
这也不起作用。
谢谢!
答案 0 :(得分:6)
为什么sed,当bash在这方面做得好多了?
假设某个名称n
表示您想要的索引:
files=(path/to/files/*pattern*.txt)
echo "${files[n]}"
i=0
for file in path/to/files/*pattern*.txt; do
if [ $i = $n ]; then
break
fi
i=$((i++))
done
echo "$file"
sed
出了什么问题,你必须跳过许多箍才能使文件名中出现的整个可能字符集安全,即使这对你没关系最后得到一个双层子壳来得到答案。
file=$(printf '%s\n' path/to/files/*pattern*.txt | sed -n "$n"p)
答案 1 :(得分:0)
ls -1 /path/to/files/*pattern*.txt | sed -n '3p'
或者,如果patterne是正则表达式
ls -1 /path/to/files/ | egrep 'pattern' | sed -n '3p'
许多其他可能性,它取决于你看到的性能或简单性