我需要准备一个csv作为加载数据的方法。我有一个目录,其中包含n个html文件。需要将每个html文件的代码复制并粘贴到csv字段中。理想情况下,这就是我希望csv看起来像
FileName Code
filename1.html contents of filename1.html here
filename2.html contents of filename2.html here
我知道有办法将目录的ls管道输入csv,但是我不确定如何实现以下结果。 我想我可能需要创建一个循环并每次添加文件时在每个间隔添加分隔符。但我不太清楚从哪里开始。将其写为shell / bash脚本是最好的
任何帮助将不胜感激
答案 0 :(得分:1)
a
和b
创建一个文件夹shell.sh
的文件运行以下命令以使shell脚本可执行
chmod +x shell.sh
在运行脚本之前,请更改以下行:
files=$(ls)
到
files=$(ls | grep -v shell | grep -v csv)
然后运行以下命令以查看脚本的输出
./shell.sh
现在将其重定向到您的csv文件:
./shell > file.csv
要查看文件file.csv
运行的内容:
cat file.csv
答案 1 :(得分:0)
假设您有两个文件:
文件a
包含:
abc
123
文件b
包含:
def
456
这样:
#!/bin/bash
echo "Filename,Code"
files=$(ls)
for file in ${files[@]}; do
echo -n $file,
tr -d '\n' < $file
echo ""
done
上面的代码将输出:
Filename,Code
a,abc123
b,def456
答案 2 :(得分:0)
不是bash,而是简单的ruby脚本,用于创建以文件名和文件内容为列的CSV文件:
require 'csv'
@path = ARGV[0]
files = []
files << ['filename', 'contents']
Dir.foreach(@path) do |filename|
next if filename == '.' or filename == '..'
files << [filename, File.read("#{@path}/#{filename}")]
end
File.write("#{@path}/result.csv", files.map(&:to_csv).join)
用法:ruby script.rb <path>