Bash 选择文件夹中的第n个文件(使用sed)?
我正在尝试选择文件夹中文件名与特定模式匹配的第n个文件: 我试着用sed这个:例如。, sed-n 3p/path/to/files/pattern.txt 但它似乎返回第一个匹配文件的第3行 我也试过了 sed-n3pBash 选择文件夹中的第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的错误在于,您必须跳过许多障碍,以确保文件名中可能出现的所有字符的安全性,即使这对您来说无
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'