Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 选择文件夹中的第n个文件(使用sed)?_Bash_Sed - Fatal编程技术网

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

Bash 选择文件夹中的第n个文件(使用sed)?,bash,sed,Bash,Sed,我正在尝试选择文件夹中文件名与特定模式匹配的第n个文件: 我试着用sed这个:例如。, sed-n 3p/path/to/files/pattern.txt 但它似乎返回第一个匹配文件的第3行 我也试过了 sed-n3pls/path/to/files/*pattern*.txt 这也不起作用 谢谢 为什么是sed,而bash在这方面做得更好 假设某个名称n表示您想要的索引: 猛击 Posix sh sed的错误在于,您必须跳过许多障碍,以确保文件名中可能出现的所有字符的安全性,即使这对您来说无

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

我试着用sed这个:例如。, sed-n 3p/path/to/files/pattern.txt

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

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


谢谢

为什么是sed,而bash在这方面做得更好

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

猛击 Posix sh
sed
的错误在于,您必须跳过许多障碍,以确保文件名中可能出现的所有字符的安全性,即使这对您来说无关紧要,您最终也会得到一个双层子shell来获得答案

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

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

ls -1 /path/to/files/ | egrep 'pattern' | sed -n '3p'
还有很多其他的可能性,这取决于您所看到的性能或简单性

file=$(printf '%s\n' path/to/files/*pattern*.txt | sed -n "$n"p)
ls -1 /path/to/files/*pattern*.txt  | sed -n '3p'
ls -1 /path/to/files/ | egrep 'pattern' | sed -n '3p'