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

时间:2014-03-05 19:16:39

标签: bash sed

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

我尝试过用sed:例如,     sed -n 3p / path / to / files / pattern .txt

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

我也试过了     sed -n 3p ls /path/to/files/*pattern*.txt 这也不起作用。

谢谢!

2 个答案:

答案 0 :(得分:6)

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

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

files=(path/to/files/*pattern*.txt)
echo "${files[n]}"

Posix sh

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)

never parse ls

答案 1 :(得分:0)

ls -1 /path/to/files/*pattern*.txt  | sed -n '3p'

或者,如果patterne是正则表达式

ls -1 /path/to/files/ | egrep 'pattern' | sed -n '3p'

许多其他可能性,它取决于你看到的性能或简单性