Linux 使用ls将文件存储到列表中,同时使用sed删除部分dirname

Linux 使用ls将文件存储到列表中,同时使用sed删除部分dirname,linux,Linux,我有一个文件夹,比如说,位于此处: /Users/spotter/Downloads 根文件夹中有两个文件: test1.txt和test2.txt 我想编写一个shell脚本,将所有文件保存到一个列表中,其中包含一行内容,如下所示: file\u list=“$(ls/Users/spotter/Downloads)” 而echo$file\u列表将返回: /Users/spotter/Downloads/test1.txt /Users/spotter/Downloads/test2.txt

我有一个文件夹,比如说,位于此处:

/Users/spotter/Downloads

根文件夹中有两个文件:

test1.txt
test2.txt

我想编写一个shell脚本,将所有文件保存到一个列表中,其中包含一行内容,如下所示:

file\u list=“$(ls/Users/spotter/Downloads)”

echo$file\u列表将返回:

/Users/spotter/Downloads/test1.txt
/Users/spotter/Downloads/test2.txt

但是,我想更改dirname的一部分。我特别想删除
/Users/spotter
部分

我这样试过:

file_list=“$(ls/Users/spotter/Downloads|
读取路径时,执行dirname“$path”| sed's/users/spotter//';done)”

返回:

sed:1:“s/users/spotter/Downloa…”:替换命令中的错误标志:“D”

sed:1:“s/users/spotter/Downloa…”:替换命令中的错误标志:“D”

当我执行
echo$file\u list
时,我希望这是输出:

下载/test1.txt

Downloads/test2.txt

问题是sed认为“/”是RE和替换之间的分隔符,因此sed没有按照您希望的方式读取另一个“/”。您可以使用其他字符作为分隔符。例如
的~/Users/spotter/~'