我有一个看起来像这样的目录:
/path/to/files/data-file.1
/path/to/files/data-file.2
/path/to/files/data-file.3
/path/to/files/data-file.4
/path/to/files/data-file.5
/path/to/files/data-file.6
我想制作一个脚本来列出变量中两个值之间的所有文件,如下所示:
#!/bin/bash
fileA="/path/to/files/data-file.2"
fileB="/path/to/files/data-file.5"
ls -v /path/to/files/*-file.[0-9]* | sed -n '/$fileA/,/$fileB/p'
输出:
/path/to/files/data-file.2
/path/to/files/data-file.3
/path/to/files/data-file.4
/path/to/files/data-file.5
但是,sed命令似乎不起作用。我猜测是因为变量中的斜杠。有没有办法在不改变变量的情况下克服这个问题?我想在 fileA 和 fileB 是动态的脚本中使用这段代码。
如果在第一次出现时对其进行转义,则可以使用不同的分隔符,这样斜杠就不会混淆
sed
。但是,请注意,使用单引号将导致bash
不替换变量,因此在您的示例中,按字面意思sed
查找,因为变量不会扩展。如果使用变量则需要使用双引号。$fileA
$fileB
所以,这样的事情应该有效: