【问题标题】:UNIX ls add text and bulk run conversion to csv for all files in dirUNIX ls 为 dir 中的所有文件添加文本并批量运行转换为 csv
【发布时间】:2014-05-05 11:41:18
【问题描述】:

也许这个问题没有正确提出>这是我在 stackoverflow 上的第一篇文章。

我创建了一个如下所示的文件:并从终端将其作为 shell 运行

#!/bin/sh
in2csv -f xls "A1.csv"  >  "export/A1.csv" |
in2csv -f xls "Allison am sch..XLS"  >  "export/Allison am sch..csv" |
in2csv -f xls "B & C Rmap am sch.XLS"  >  "export/B & C Rmap am sch.csv" |
in2csv -f xls "BOW K's am sch.XLS"  >  "export/BOW K's am sch.csv" |
cat *.csv > all.csv

因为没有一种工具可以做到这一点。我可以从将创建 shell 文件的终端构建文本文件吗?

first ls > files.txt # 列出我想在前后添加文本的所有文件: 在前面 in2csv -f xls " 文件名放在这里 后面" > "export/Allison am sch..csv" | 一旦我拥有了所有这些,我就可以简单地运行一个 sh 命令。

或者有没有更好的方法。无需使用另一个具有大量依赖项的程序来管理?谢谢 我想知道如何使用 unix(终端)将 .xls 转换为 csv 的目录中的所有文件。我可以做到,但想知道更好的方法。我的步骤是

ls > files.txt

然后将 txt 文件导入 SAS,我在文件中添加文本以使用 csvkit 进行转换:SAS 代码如下所示,其中 VAR1 是 xls 文件名称的文本。

data names2; 
set names;
example VAR1 = "Lakota Trade ctr am sch.XLS"

有很多这样的文件:这是 SAS 代码:

data file;
set file;
f = "in2csv -f xls " || '"'|| strip(VAR1) || '"'|| "  >  " || '"'||strip(tranwrd(VAR1, "XLS", "csv"))||'"';
drop var1;
run;

然后我可以将每一行复制到终端并让csvkit:in2csv 进行转换。我不想使用 SAS 的本机导入进行转换。我想知道如何完全在 unix 终端甚至 Perl 中做这样的事情。

【问题讨论】:

  • 你不能这样做,你必须使用非 unix 工具。
  • 这个SO问题中描述了几种方法:Convert xlsx to csv in linux command line
  • 似乎你只需要在你的脚本(你提到的第一个文件)中有一个 for 循环,它将为目录中的每个文件运行你的命令。它需要解析文件名的尾随“.XLS”或“.csv”部分。不清楚这就是你想要的,所以我不会尝试回答。

标签: r perl unix terminal sas


【解决方案1】:

查看包裹gdata。这提供了一个使用 perl 的函数 read.xls,它将 .xlsx 文件转换为 .csv。您可能可以深入研究包以查看如何从命令行而不是 R 执行此操作。

【讨论】:

    猜你喜欢
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多