tree Linux命令中文乱码解决方案

本文围绕Linux系统中的tree命令展开,介绍其功能是以树形结构列出指定目录下所有内容。详细说明了命令语法格式,还给出安装步骤及解决乱码的方法。通过多个基础和技巧性范例,展示了tree命令不同参数的使用方式,如 -a、-L、-d 等。

中文乱码解决方案

-N 参数

tree -N

[root@web-site aria2]# tree -N
.
├── 2853972b-f932-4fc8-b791-b57b766998ae
│ ├── [越狱]Prison.Break.S02.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO
│ │ ├── [越狱]Prison.Break.S02E01.Manhunt.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E02.Otis.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E03.Scan.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E04.First.Down.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E05.Map.1213.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E06.Subdivision.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E07.Buried.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E08.Dead.Fall.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E09.Unearthed.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E10.Rendezvous.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E11.Bolshoi.Booze.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E12.Disconnect.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E13.The.Killing.Box.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E14.John.Doe.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E15.The.Message.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E16.Chicago.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E17.Bad.Blood.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E18.Wash.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E19.Sweet.Caroline.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E20.Panama.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S02E21.Fin.Del.Camino.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ └── [越狱]Prison.Break.S02E22.Sona.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ └── [越狱]Prison.Break.S02.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.aria2
├── 3833dd7d-19bd-46be-aae6-40b47e4b0977
│ └── 阿凡达.加长版.2009.BD1080P.X264.AAC.English.CHS-ENG.BDYS
│ └── 阿凡达.加长版.2009.BD1080P.X264.AAC.English.CHS-ENG.BDYS.mp4
├── b0851419-ebe8-4bfd-8d15-b200defdbce6
│ ├── [越狱]Prison.Break.S03.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO
│ │ ├── [越狱]Prison.Break.S03E01.Orientación.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E02.Fire-Water.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E03.Call.Waiting.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E04.Good.Fences.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E05.Interference.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E06.Photo.Finish.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E07.Vamonos.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E08.Bang.and.Burn.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E09.Boxed.In.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E10.Dirt.Nap.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E11.Under.and.Out.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [越狱]Prison.Break.S03E12.Hell.or.High.Water.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ └── [越狱]Prison.Break.S03E13.The.Art.of.the.Deal.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ └── [越狱]Prison.Break.S03.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.aria2
└── f71f8f06-f947-4e94-85cb-14386dc3f8d4
├── [越狱]Prison.Break.S01.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO
│ ├── [越狱]Prison.Break.S01E01.Pilot.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E02.Allen.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E03.Cell.Test.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E04.Cute.Poison.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E05.English.Fitz.or.Percy.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E06.Riots.Drills.and.the.Devil.Part.1.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E07.Riots.Drills.and.the.Devil.Part.2.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E08.The.Old.Head.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E09.Tweener.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E10.Sleight.of.Hand.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E11.And.Then.There.Were.7.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E12.Odd.Man.Out.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E13.End.of.the.Tunnel.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E14.The.Rat.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E15.By.the.Skin.and.the.Teeth.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E16.Brothers.Keeper.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E17.J-Cat.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E18.Bluff.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E19.The.Key.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E20.Tonight.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [越狱]Prison.Break.S01E21.Go.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ └── [越狱]Prison.Break.S01E22.Flight.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
└── [越狱]Prison.Break.S01.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.aria2

tree

[root@web-site aria2]# tree
.
├── 2853972b-f932-4fc8-b791-b57b766998ae
│ ├── [\350\266\212\347\213\261]Prison.Break.S02.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO
│ │ ├── BT\344\271\213\345\256\266\345\206\205\351\231\204BT\344\271\213\345\256\266\347\275\221\345\235\200\346\237\245\350\257\242\345\267\245\345\205\267.txt
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E01.Manhunt.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E02.Otis.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E03.Scan.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E04.First.Down.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E05.Map.1213.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E06.Subdivision.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E07.Buried.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E08.Dead.Fall.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E09.Unearthed.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E10.Rendezvous.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E11.Bolshoi.Booze.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E12.Disconnect.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E13.The.Killing.Box.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E14.John.Doe.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E15.The.Message.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E16.Chicago.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E17.Bad.Blood.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E18.Wash.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E19.Sweet.Caroline.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E20.Panama.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S02E21.Fin.Del.Camino.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ └── [\350\266\212\347\213\261]Prison.Break.S02E22.Sona.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ └── [\350\266\212\347\213\261]Prison.Break.S02.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.aria2
├── 3833dd7d-19bd-46be-aae6-40b47e4b0977
│ └── \351\230\277\345\207\241\350\276\276.\345\212\240\351\225\277\347\211\210.2009.BD1080P.X264.AAC.English.CHS-ENG.BDYS
│ ├── \345\256\230\346\226\271Telegram\344\272\244\346\265\201\347\276\244@bde4_com.url
│ ├── \346\234\200\346\226\260\345\237\237\345\220\215\345\217\212\345\237\237\345\220\215\346\211\276\345\233\236.txt
│ ├── \347\202\271\345\207\273\350\277\233\345\205\245btbdys.com\345\223\224\345\230\200\345\275\261\350\247\206\351\253\230\346\270\205\345\234\250\347\272\277\347\275\221\347\253\231.url
│ ├── \350\257\267\345\201\232\347\247\215(Please\ seed\ it.).txt
│ └── \351\230\277\345\207\241\350\276\276.\345\212\240\351\225\277\347\211\210.2009.BD1080P.X264.AAC.English.CHS-ENG.BDYS.mp4
├── b0851419-ebe8-4bfd-8d15-b200defdbce6
│ ├── [\350\266\212\347\213\261]Prison.Break.S03.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO
│ │ ├── BT\344\271\213\345\256\266\345\206\205\351\231\204BT\344\271\213\345\256\266\347\275\221\345\235\200\346\237\245\350\257\242\345\267\245\345\205\267.txt
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E01.Orientaci\303\263n.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E02.Fire-Water.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E03.Call.Waiting.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E04.Good.Fences.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E05.Interference.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E06.Photo.Finish.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E07.Vamonos.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E08.Bang.and.Burn.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E09.Boxed.In.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E10.Dirt.Nap.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E11.Under.and.Out.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ ├── [\350\266\212\347\213\261]Prison.Break.S03E12.Hell.or.High.Water.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ │ └── [\350\266\212\347\213\261]Prison.Break.S03E13.The.Art.of.the.Deal.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ └── [\350\266\212\347\213\261]Prison.Break.S03.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.aria2
└── f71f8f06-f947-4e94-85cb-14386dc3f8d4
├── [\350\266\212\347\213\261]Prison.Break.S01.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO
│ ├── BT\344\271\213\345\256\266\345\206\205\351\231\204BT\344\271\213\345\256\266\347\275\221\345\235\200\346\237\245\350\257\242\345\267\245\345\205\267.txt
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E01.Pilot.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E02.Allen.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E03.Cell.Test.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E04.Cute.Poison.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E05.English.Fitz.or.Percy.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E06.Riots.Drills.and.the.Devil.Part.1.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E07.Riots.Drills.and.the.Devil.Part.2.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E08.The.Old.Head.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E09.Tweener.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E10.Sleight.of.Hand.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E11.And.Then.There.Were.7.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E12.Odd.Man.Out.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E13.End.of.the.Tunnel.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E14.The.Rat.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E15.By.the.Skin.and.the.Teeth.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E16.Brothers.Keeper.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E17.J-Cat.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E18.Bluff.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E19.The.Key.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E20.Tonight.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ ├── [\350\266\212\347\213\261]Prison.Break.S01E21.Go.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
│ └── [\350\266\212\347\213\261]Prison.Break.S01E22.Flight.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.mp4
└── [\350\266\212\347\213\261]Prison.Break.S01.1080p.BluRay.x265.10bit.DDP5.1.CHS-ENG.BOBO.aria2

8 directories, 68 files

命令详解

【命令星级】 ★★★★☆

【功能说明】

tree命令的中文意思为“树”,功能是以树形结构列出指定目录下的所有内容,包括所有文件、子目录及子目录里的目录和文件。

【语法格式】

tree [option] [directory]
tree [选项] [目录]

1)注意tree命令以及后面的选项和目录,每个元素之间都至少要有一个空格。

2)tree命令后若不接选项和目录就会默认显示当前所在路径目录的目录结构。

2.3.2 使用范例

在讲解范例之前,先做一些准备工作,步骤如下。

第一步,安装tree命令。

首先检查系统是否安装了tree命令,如果采用的是最小化安装Linux系统的方式,那么tree命令有可能没有安装。此时可用yum命令安装tree命令:

[root@web-site ~]# rpm -qa tree #<==查询tree命令是否安装。
tree-1.5.3-2.el6.x86_64 #<==如果没有显示就执行下面的命令。
[root@web-site ~]# yum -y install tree #<==安装tree命令的yum命令。****

第二步,调整系统字符集,防止树形结构显示乱码。

在使用树形结构时,很可能会因为字符集导致出现乱码问题,比如导致树形的树枝部分都是问号,例如:

[root@web-site ~]# tree /boot/
/boot/
├── config-2.6.32-573.el6.x86_64
├── efi
│?? └── EFI
│?? └── redhat
│?? └── grub.efi

下面的命令为临时解决树结构乱码的方法:

[root@web-site ~]# LANG=en_US.UTF-8

这个问题与Linux系统字符集以及我们连接Linux客户端的字符集都有关联。

1.基础范例

范例2-9:不带任何参数执行tree命令。

[root@web-site etc]# cd ~
[root@web-site ~]# tree #<显示当前目录的结构。
. #<
“.”以当前目录为起点。
├── anaconda-ks.cfg
├── install.log
└── install.log.syslog

0 directories, 3 files

范例2-10:以树形结构显示目录下的所有内容(-a的功能)。

[root@web-site ~]# tree -a #<==带-a参数显示所有文件(包括隐藏文件)。
.
├── anaconda-ks.cfg
├── .bash_history #<==在Linux系统中,以“.”点号开头的文件为隐藏文件,默认不显示。
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── install.log
├── install.log.syslog
├── .mysql_history
├── .tcshrc
└── .viminfo

0 directories, 11 files
#<==上述命令结果仅供参考,能看到加粗的以点开头的隐藏文件即可,列表内容的名字因为系统的不同多少可能会有些区别。

范例2-11:只列出根目录下第一层目录的结构(-L功能)。

[root@web-site ~]# tree -L 1 / #<==-L参数后接数字,表示查看目录的层数,不带-L选项默
认显示所有层数。
/
├── bin
├── boot
…省略若干行…
├── sys
├── tmp
├── usr
└── var

20 directories, 0 files

范例2-12:只显示所有的目录(但不显示文件)。

[root@web-site ~]# tree -d /etc/ #<-d参数表示只显示目录。
/etc/
|-- ConsoleKit
| |-- run-seat.d
| |-- run-session.d
| '-- seats.d
|-- NetworkManager
| '-- dispatcher.d
……省略若干行
[root@web-site ~]# tree -dL 1 /etc/ #<
-d参数只显示目录,-L参数显示层数,这里是1层。
/etc/
|-- ConsoleKit
|-- NetworkManager
|-- X11
……省略若干行

范例2-13:-f选项和-i选项的使用。

使用-f选项可显示完整的路径名称,使用-i选项则不显示树枝部分,示例代码如下:

[root@web-site ~]# tree -L 1 -f /boot/ #<==-f显示内容的完整路径。
/boot
├── /boot/config-2.6.32-504.el6.x86_64
├── /boot/efi
├── /boot/grub
├── /boot/initramfs-2.6.32-504.el6.x86_64.img
├── /boot/lost+found
├── /boot/symvers-2.6.32-504.el6.x86_64.gz
├── /boot/System.map-2.6.32-504.el6.x86_64
└── /boot/vmlinuz-2.6.32-504.el6.x86_64

3 directories, 5 files
[root@web-site ~]# tree -L 1 -fi /boot/ #<==-i不显示“树枝”,当需要获取所有
文件的完整路径时,这个命令很好用。
/boot
/boot/config-2.6.32-504.el6.x86_64
/boot/efi
/boot/grub
/boot/initramfs-2.6.32-504.el6.x86_64.img
/boot/lost+found
/boot/symvers-2.6.32-504.el6.x86_64.gz
/boot/System.map-2.6.32-504.el6.x86_64
/boot/vmlinuz-2.6.32-504.el6.x86_64

3 directories, 5 files

2.技巧性范例

范例2-14:使用tree命令区分目录和文件的方法(常用)。

#<==使用-F参数会在目录后面添加“/”,方便区分目录。
[root@web-site ~]# tree -L 1 -F /boot/

/boot/
├── config-2.6.32-504.el6.x86_64
├── efi/
├── grub/
├── initramfs-2.6.32-504.el6.x86_64.img
├── lost+found/
├── symvers-2.6.32-504.el6.x86_64.gz
├── System.map-2.6.32-504.el6.x86_64
└── vmlinuz-2.6.32-504.el6.x86_64*

#<==过滤以斜线结尾的所有内容,如果大家看不懂这个方法,那么建议等学完grep命令再回头来看。
[root@web-site ~]# tree -L 1 -F /boot/|grep /$

/boot/
|-- efi/
|-- grub/
|-- lost+found/
3 directories, 5 files

#<==使用-d参数只显示目录树,这样可轻松过滤内容中的目录。
[root@web-site ~]# tree -L 1 -d /boot/

/boot/
|-- efi
|-- grub
'-- lost+found

3 directories

更多技术教程,请点击这里

<think>在C++中读取XML文件时遇到中文乱码问题,通常是因为文件编码与程序读取时使用的编码不一致。常见的XML文件编码有UTF-8、GBK等。下面我将介绍几种解决方法: ### 方法1:确保XML文件声明编码且程序使用相同编码 XML文件通常在第一行有编码声明,例如: ```xml <?xml version="1.0" encoding="UTF-8"?> ``` 如果声明了编码,那么我们在读取文件时应该使用相同的编码。 #### 步骤: 1. 使用正确的编码打开文件流(如UTF-8)。 2. 使用支持宽字符或指定编码的库(如libxml2、tinyxml2、pugixml)来解析。 #### 示例(使用pugixml库): pugixml支持UTF-8编码,并且可以处理中文。 首先,确保你的XML文件是UTF-8编码(无BOM)。然后使用pugixml加载。 ```cpp #include <pugixml.hpp> #include <iostream> int main() { pugi::xml_document doc; // 加载XML文件,pugixml默认支持UTF-8 pugi::xml_parse_result result = doc.load_file("example.xml"); if (!result) { std::cerr << "XML [" << "example.xml" << "] parsed with errors." << std::endl; std::cerr << "Error description: " << result.description() << std::endl; return -1; } // 获取根节点 pugi::xml_node root = doc.document_element(); // 假设我们有一个节点包含中文 pugi::xml_node node = root.child("chineseNode"); if (node) { // 输出节点文本,控制台需要支持UTF-8输出(如Linux终端或Windows配置后的控制台) std::cout << "Text: " << node.text().get() << std::endl; } return 0; } ``` #### 注意: - 在Windows控制台直接输出UTF-8可能会乱码,因为Windows控制台默认编码是GBK。可以设置控制台为UTF-8模式(使用`SetConsoleOutputCP(65001);`),但并不是所有Windows版本都支持良好。 ### 方法2:转换编码 如果XML文件是GBK编码,而程序使用UTF-8,则需要在读取后进行转换。 #### 步骤: 1. 以二进制模式读取文件,得到字节流。 2. 使用编码转换库(如iconv、Windows API、MultiByteToWideChar等)将字节流从文件编码转换为程序需要的编码(如UTF-8)。 #### 示例(使用Windows API转换): 假设XML文件是GBK编码,我们将其转换为UTF-8。 ```cpp #include <windows.h> #include <fstream> #include <vector> #include <string> #include <iostream> std::string GBKToUTF8(const std::string& strGBK) { int len = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, nullptr, 0); wchar_t* wstr = new wchar_t[len]; MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, wstr, len); len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, nullptr, 0, nullptr, nullptr); char* str = new char[len]; WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, nullptr, nullptr); std::string result(str); delete[] wstr; delete[] str; return result; } int main() { std::ifstream file("example_gbk.xml", std::ios::binary); if (!file) { std::cerr << "Failed to open file." << std::endl; return -1; } // 读取整个文件 std::string content((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); file.close(); // 将GBK内容转换为UTF-8 std::string utf8_content = GBKToUTF8(content); // 现在utf8_content是UTF-8编码的字符串,可以交给XML解析器处理 // 注意:这里假设解析器要求UTF-8字符串,如pugixml pugi::xml_document doc; pugi::xml_parse_result result = doc.load_string(utf8_content.c_str()); // ... 解析XML节点 return 0; } ``` ### 方法3:使用支持自动检测编码的库 一些XML库可以自动检测文件编码(如libxml2)。例如: ```cpp #include <libxml/parser.h> #include <libxml/tree.h> int main() { xmlDoc *doc = xmlReadFile("example.xml", nullptr, XML_PARSE_RECOVER); if (doc == nullptr) { fprintf(stderr, "Failed to parse document\n"); return 1; } xmlNode *root = xmlDocGetRootElement(doc); // 遍历节点... xmlFreeDoc(doc); return 0; } ``` libxml2会自动处理编码,只要文件有正确的声明。 ### 总结: 1. 确认XML文件的实际编码(通过编辑器查看)。 2. 确保XML解析库使用相同的编码,或者在读取后进行转换。 3. 注意输出环境(如控制台)的编码设置。 ### 常见原因: - 文件编码与解析器默认编码不一致。 - 文件没有BOM头,解析器无法识别。 - 输出环境(如控制台)不支持文件中的编码。 §§相关问题§§: 1. 在C++中如何读取UTF-8编码的文本文件? 2. 如何在Windows控制台中正确显示UTF-8字符? 3. 如何使用C++标准库转换不同编码的字符串? 4. 除了pugixml,还有哪些支持中文编码的C++ XML解析库?</think>### 解决C++读取XML中文乱码问题 #### 主要原因: 1. **编码不一致**:XML文件使用UTF-8/GBK等编码,但程序未正确处理 2. **缺少BOM头**:Windows系统对无BOM的UTF-8文件识别有误 3. **库的默认编码**:XML解析库默认使用系统本地编码(如Windows的ANSI) 4. **输出环境限制**:控制台默认不支持UTF-8输出 --- ### 解决方案及代码示例 #### 方法1:使用支持编码转换的XML库(推荐) ```cpp #include <pugixml.hpp> // 需要安装pugixml库 int main() { // 加载XML时显式指定编码 pugi::xml_document doc; pugi::xml_parse_result result = doc.load_file( "data.xml", pugi::parse_default, pugi::encoding_utf8 // 明确指定UTF-8编码 ); // 获取中文节点 pugi::xml_node node = doc.child("root").child("chinese"); std::string text = node.text().get(); // 在Windows控制台正确输出中文 #ifdef _WIN32 SetConsoleOutputCP(65001); // 设置控制台为UTF-8模式 #endif std::cout << "中文内容: " << text << std::endl; return 0; } ``` #### 方法2:手动转换编码(无第三方库) ```cpp #include <fstream> #include <string> #include <windows.h> // Windows编码转换API std::string ConvertEncoding(const std::string& input, int from, int to) { int wlen = MultiByteToWideChar(from, 0, input.c_str(), -1, NULL, 0); wchar_t* wbuf = new wchar_t[wlen]; MultiByteToWideChar(from, 0, input.c_str(), -1, wbuf, wlen); int len = WideCharToMultiByte(to, 0, wbuf, -1, NULL, 0, NULL, NULL); char* buf = new char[len]; WideCharToMultiByte(to, 0, wbuf, -1, buf, len, NULL, NULL); std::string result(buf); delete[] wbuf; delete[] buf; return result; } int main() { // 读取原始字节 std::ifstream file("data.xml", std::ios::binary); std::string content((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); // 假设XML是GBK编码,转换为UTF-8 std::string utf8Content = ConvertEncoding(content, 936, CP_UTF8); // 使用转换后的内容解析XML(需支持UTF-8的解析器) // ... [XML解析代码] } ``` #### 方法3:使用C++11的codecvt(跨平台方案) ```cpp #include <fstream> #include <codecvt> #include <locale> std::string ReadFileAsUTF8(const std::string& path) { // 以二进制方式读取 std::ifstream file(path, std::ios::binary); std::string content((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); // 检测BOM头 (UTF-8的EF BB BF) if (content.size() >= 3 && static_cast<unsigned char>(content[0]) == 0xEF && static_cast<unsigned char>(content[1]) == 0xBB && static_cast<unsigned char>(content[2]) == 0xBF) { return content.substr(3); // 去掉BOM头 } // 无BOM时尝试转换(假设源文件是本地编码) std::wstring_convert<std::codecvt_utf8<wchar_t>> conv; std::wstring wide = conv.from_bytes(content); return conv.to_bytes(wide); } ``` --- ### 最佳实践建议: 1. **统一使用UTF-8编码**: - 保存XML文件时选择带BOM的UTF-8格式 - 在XML声明中指定编码:`<?xml version="1.0" encoding="UTF-8"?>` 2. **环境配置**: ```cpp // Windows系统需要设置本地化 setlocale(LC_ALL, ".UTF8"); // 设置控制台输出编码 SetConsoleOutputCP(CP_UTF8); ``` 3. **库的选择**: - pugixml:轻量级,支持编码指定 - tinyxml2:跨平台,需手动处理编码 - libxml2:功能全面,支持自动编码检测
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个火星程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值