我正在使用“tree”命令创建一个在 Libre Office Calc 中解析的文本文件:
tree -ifsD --timefmt "%Y-%m-%d %T" $PWD > dirlist_tree.txt
我添加了“-F”选项,在目录行末尾添加“/”,以帮助 Calc 进行解析:
tree -F -ifsD --timefmt "%Y-%m-%d %T" $PWD > dirlist_tree.txt
从我目前找到的信息来看,此选项可能会在输出中添加三个额外字符。其中至少有一个字符给我带来了一些问题,因此,我提出了这个问题:
我怎样才能限制该tree -F
命令,使得它只会将“/”添加到目录行,而不会添加其他内容,例如当前正在执行的“=”或“|”或“*”?
谢谢,
巴巴哥
答案1
要解析tree
输出,您应该使用机器可读的输出,json
例如tree -J
:
例如使用解析为 CSVPython
并在 Libre Office Calc 中直接打开:
tree_to_csv.py
#!/usr/bin/env python3
import json,sys,csv
data = json.load(sys.stdin)
elements = []
def get_element(el):
global elements
if "size" in el:
elements.append(el)
if el["type"] == "directory":
for sub_el in el["contents"]:
get_element(sub_el)
for el in data:
get_element(el)
fieldnames = ['size', 'time', 'name']
writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames, extrasaction='ignore')
writer.writeheader()
for el in elements:
if el["type"] == "directory":
el["name"] += '/'
writer.writerow(el)
跑步:
tree -Jsf --timefmt "%Y-%m-%d %T" | python tree_to_csv.py