linux - 使用 Linux shell 命令,如何将通过管道流提供的文件列表编辑为 CSV 格式?

标签 linux shell file csv path

使用 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 Server。

提前致谢!

最佳答案

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

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

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

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

关于linux - 使用 Linux shell 命令,如何将通过管道流提供的文件列表编辑为 CSV 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51404759/

相关文章:

linux - 删除 python3.4 后,ubuntu 14.04 中没有显示仪表板/终端/侧边栏

linux - 共享应用程序(别名指令)权限问题

shell - set -e 和 exec "$@"对 docker 入口点脚本有什么作用?

python - VIM自动补全废话

c - 在c中打开一个编号的文件

sqlite - 使用文件或 sqlite 数据库缓存数据哪个更好?

java - JVM 忽略 Xms 设置

c++ - 父进程发生了什么?

linux - 如何将文件的行分成其他文件

android - 如何将SD卡上的3gp文件上传到服务器?