选择文件夹中的第n个文件(使用sed)?

mad*_*eke 5 bash sed

我试图在文件名匹配某个模式的文件夹中选择第n个文件:

香港专业教育学院尝试使用sed:例如,sed -n 3p/path/to/files/pattern .txt

但它似乎返回第一个匹配文件的第3行.

我也尝试过sed -n 3p ls /path/to/files/*pattern*.txt ,它也不起作用.

谢谢!

koj*_*iro 6

为什么sed,当bash在这方面做得好多了?

假设某个名称n表示您想要的索引:

巴什

files=(path/to/files/*pattern*.txt)
echo "${files[n]}"
Run Code Online (Sandbox Code Playgroud)

Posix sh

i=0
for file in path/to/files/*pattern*.txt; do
  if [ $i = $n ]; then
    break
  fi
  i=$((i++))
done
echo "$file"
Run Code Online (Sandbox Code Playgroud)

有什么不对的sed是你必须跳过许多箍才能使文件名中可能出现的整个可能字符集安全,即使这对你来说无关紧要,你最终会得到一个双层的亚壳来得到答案.

file=$(printf '%s\n' path/to/files/*pattern*.txt | sed -n "$n"p)
Run Code Online (Sandbox Code Playgroud)

永远解析ls.