我正在尝试在 sed 中编辑一个我一直遇到问题的简单字符串。基本上我要做的是使用 pwd 获取我当前的工作目录,将其通过管道传输到 sed,编辑文件路径,然后使用 ls 检查文件路径内容。我需要这样做的原因是动态检查备份以查看备份是否包含我当前正在使用的文件夹中的文件(只是将其设置为快速热键)。
这是我到目前为止所得到的:
pwd | sed "s/`whoami`/`whoami`.{daily,weekly,monthly}/g" | xargs ls
在我的服务器上运行它时(它是一个共享托管服务器,因此需要whoami
而不仅仅是用户名)我得到这个错误:
/bin/ls: cannot access /home1/username.{daily,weekly,monthly}: No such file or directory
但是,我可以毫无问题地运行此命令:
ls /home1/username.{daily,weekly,monthly}
我已经尝试了大约 20 种该命令的不同变体(以及各种 sed 和 xargs 标志),但似乎无法使其正常工作。我相信这个错误是由 sed 处理搜索和替换流的方式引起的,但是我不知道如何解决它或导致它的确切原因。
我相信是 sed 导致了这个问题,因为这个命令有同样的错误:
ls `pwd | sed "s/$(whoami)/$(whoami).{daily,weekly,monthly}/g"`
/bin/ls: cannot access /home1/username.{daily,weekly,monthly}: No such file or directory
如果有人能告诉我为什么会这样,或者 sed 以某种方式将编辑后的版本正确传递给 ls。我应该能够为它找出一个命令,我只需要知道为什么。谢谢!