使用Linux shell命令,如何将通过管道流馈送的文件列表编辑为CSV格式



使用Linux shell命令,如何递归搜索目录并将文件列表输出为两个值的CSV文件;路径&文件

例如,假设我有以下文件结构…

home/readme.txt.
home/web/fruit/grapes.pdf
home/web/animals/mammals/bears.gif

我想要一个带有输出的CSV文件…

home,readme.txt
home/web/fruit,grapes.pdf
home/web/animals/mammals,bears.gif

到目前为止,我最接近的是使用命令:

find home -type f | sed ‘s///,/g’

但这并不完全正确,因为上面的命令最终用逗号替换了所有的斜杠,而不仅仅是最后一个。

有人想过我该怎么做吗?

作为参考,我使用的是Redhat Enterprise Linux服务器。

提前感谢!

您可以使用sed。由于正则表达式使用此工具是贪婪的,因此它将用,:替换最后出现的字符/

sed 's#(.*)/(.*)#1,2#' file

如果您需要对目录中的所有文件执行此操作,请使用以下命令:

find -type f -exec sed 's#(.*)/(.*)#1,2#' {} ;

您正在寻找以/结尾的最长前缀,可以在.*/中找到。然后,您需要使用该前缀,可以使用(.*)/捕获该前缀,并使用1重播该前缀。

因此,将您的sed更新为sed 's/(.*)//1,/'

给予:

find home -type f | sed 's/(.*)//1,/'

相关内容

  • 没有找到相关文章