如何借助tree命令输出在其他位置创建相同目录树结构?
当然可以!不管你是想用
tree的输出来重建目录结构,还是直接从原目录生成结构(这种方式往往更稳定),都有靠谱的方法: 方法一:直接用find生成目录列表(推荐)
其实不用依赖tree的输出,直接用find命令提取原目录的所有目录结构会更稳妥——毕竟不同系统的tree输出格式可能略有差异,而find的输出更标准化:
- 先在原目录所在位置,导出所有目录的完整路径:
这里find /path/to/your/source -type d -print > dir_list.txt-type d表示只筛选目录,-print会把每个目录的路径写入到dir_list.txt文件中。 - 切换到你想创建目录树的目标位置,执行以下命令批量创建目录:
while read dir_path; do mkdir -p "$dir_path"; done < dir_list.txtmkdir -p是关键参数,它会自动创建所有嵌套的父目录,不会因为中间层级不存在而报错。
方法二:基于tree的输出重建目录
如果你手里已经有了tree的输出文件,先确保生成这个输出时加上-F参数(让目录名称末尾带上/,方便区分文件和目录):
tree -F /path/to/your/source -o tree_output.txt
然后用awk过滤出目录行,去掉tree输出自带的树形前缀符号(比如├、└、-这些),再批量创建目录:
awk '/\/$/ {sub(/^[│├└─ ]+/, ""); print}' tree_output.txt | xargs -I {} mkdir -p "/path/to/your/destination/{}"
/\/$/:只匹配行尾带有/的行(也就是目录)sub(/^[│├└─ ]+/, ""):移除行首的树形符号,只保留纯目录路径xargs -I {}:把处理后的每个目录路径作为参数,传给mkdir -p执行创建
小提醒
- 如果原目录用的是相对路径,处理时要注意目标位置的相对关系,避免路径出错
mkdir -p很安全,即使目标目录已经存在也不会抛出错误
内容的提问来源于stack exchange,提问作者Roman Kaganovich
相关产品推荐
相关产品推荐

