【问题标题】:need to get recursive list of files using mac command line需要使用mac命令行获取文件的递归列表
【发布时间】:2015-04-15 16:18:11
【问题描述】:

我需要通过 mac 控制台窗口获取文件夹的内容 并通过 >output.txt:

放入文本文件

现有结构如下:

folder/index.html
folder/images/backpack.png
folder/shared/bootstrap/fonts/helvertica.eot
folder/css/fonts/helverticabold.eot
folder/shared/css/astyle.css
folder/js/libs/jquery-ui-1.10.4/jquery-ui.min.js",
folder/js/libs/jquery.tipsy.js
folder/js/libs/raphael.js

我想要的看起来是这样的(文件夹不见了):

index.html
images/backpack.png
shared/bootstrap/fonts/helvertica.eot
css/fonts/helverticabold.eot
shared/css/astyle.css
js/libs/jquery-ui-1.10.4/jquery-ui.min.js
js/libs/jquery.tipsy.js
js/libs/raphael.js

没有列出 css/fonts 或 js/libs 或 css 文件夹 即没有文件夹……也没有像

这样的格式

/folder/shared/css/astyle.css 或 ./folder/shared/css/astyle.css

使用括号和逗号会更好:

“index.html”,
“images/backpack.png”,
“shared/bootstrap/fonts/helvertica.eot”,
“css/fonts/helverticabold.eot”,
“shared/css/astyle.css”,
“js/libs/jquery-ui-1.10.4/jquery-ui.min.js”,
“js/libs/jquery.tipsy.js”,
“js/libs/raphael.js”

因为我想制作一个 json 文档。这可能吗? 谢谢。

【问题讨论】:

  • 我很困惑,为什么ls -R 不适合你?它已经没有列出包含文件夹。如果您确实需要引号和逗号,可以将 ls 的输出通过管道传输到 sed:ls <dir> | sed 's/^/"/;s/$/",/' > filename

标签: macos unix terminal filelist


【解决方案1】:

这是find擅长的任务:

% find folder -type f | sed -e 's,folder/,",' -e 's/$/",/'

可能可以调整's,folder/,",'替换,比如说

(cd folder; find . -type f) | sed 's/\(.*\)/"\1",/'

进一步的改进是读者的练习!

【讨论】:

  • 这就是它!但它在开始时有一个“./” - 任何摆脱它的方法
  • 我正在使用(cd 文件夹;查找 .-type f)| sed 's/(.*)/"\1",/'
  • 好吧,既然您知道结果行将以./ 开头,您可以在正则表达式中将其与's|^\./(.*)|"\1",|' 匹配
猜你喜欢
  • 1970-01-01
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 2013-05-31
  • 2017-09-22
相关资源
最近更新 更多