在尚未转换的文件上运行bash脚本

时间:2018-02-18 15:28:26

标签: python json shell csv

我有一个python脚本将json文件转换为csv。它目前转换所有文件,但我希望它只在那些尚未转换为csv的json文件上运行。所有都在同一目录中。如何修改我的代码:

const alldata = listA.map(u => listB.filter(oo => u.name === oo.name));

2 个答案:

答案 0 :(得分:1)

假设您的脚本为名为basename.csv

的输入文件创建basename.json
for f in *.json; do
    test -e "${f%.json}.csv" && continue
    python ~/bin/convert.py "$f" "-fcsv"
done

shell参数展开$(variable%pattern}生成variable的值,并删除了球pattern上的任何匹配项。

答案 1 :(得分:-1)

这会利用find GNU-util并使用python 其余的部分。由于您正在运行python脚本,我假设python是 安装在系统上。

以下完整命令:

find . \( -type f -regextype posix-extended -regex  '.*json' \) - exec python -c "import sys; import os; filename, file_extension = os.path.splittext(sys.argv[1]); if not os.path.isfile(filename + '.csv') : os.system('python ~/bin/convert ' + filename + file_extension + ' -fcsv')" {}

搜索扩展名为.json的文件

find . \( -type f -regextype posix-extended -regex  '.*json' \)

获取find命令的输出并将其输入到python命名空间

filename, file_extension = os.path.splittext(sys.argv[1]);

检查是否存在扩展名为.csv的文件名,如果没有则运行convert.py程序

if not os.path.isfile(filename+'.csv'): os.system('python ~/bin/convert.py ' + filename+file_extension + ' -fcsv')" 

您可以将整个脚本放入bash脚本中,并使用\将其分成多行,如下所示:How can I split a shell command over multiple lines when using an IF statement?