使用 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/