【发布时间】:2017-11-22 05:07:07
【问题描述】:
假装我的根是:
foo
我有一个文件夹结构:
-foo
-123
-file.jpg
-file2.jpg
-456
-file.jpg
-file2.jpg
该目录可能更深一些文件夹。
如果我有这样的根:
ROOT=foo
如何在 shell 脚本中以 CSV 格式列出每个文件名及其路径?
我尝试了一些答案,但我很难让它输出一长串 CSV。
我希望是这样的:
file.jpg,123,file2.jpg,123,file.jpg,456,file2.jpg,456
所以,我尝试了这个:
# make a var for files in current folder
arr=(./*)
CSVRETURN=""
# simple loop to iterate files
for ((i=0; i<${#arr[@]}; i++)); do
#do something to each element of array
CSVRETURN="$CSVRETURN","${arr[$i]}"
done
echo $CSVRETURN
它不断在我的输出中添加句点,我不相信我什至没有正确的递归部分。有人可以指出我正确的方向或可能有帮助的文档吗?
我对 shell 脚本做的很少,但我正在尝试 :) 基本上会采用这个答案并将整个目录导出到 CSV,并提供带有其目录路径(相对于初始目录)的图像链接轻松过滤以导入 Excel。
【问题讨论】:
-
这不是一个理智的输出格式。
-
您想以真正 CSV 可解析的形式输出吗?在这种情况下,您需要考虑到文件名也可以包含逗号或换行符。我不会从命令行手动创建 CSV 格式,而是使用可用于各种编程语言的众多 CSV 库之一。
标签: bash shell loops csv recursion