当前位置: 首页 > 科技观察

助你掌握Linux:简单却不简单的ls命令

时间:2023-03-15 23:53:49 科技观察

ls命令,即列出目录内容,是大家最熟悉的Linux命令。它就像汽车或手机里的导航地图,彻底解放了我们的大脑,一刻也离不开身体。不然下楼取快递的话,要绕18圈才能勉强找到回家的路。在之前的《Linux手册》课程中,我们大量使用了ls地图查看器。1.只列出当前目录文件先从一个具体的问题说起,如何只打印出目录文件。如果使用find命令,它不仅简单,而且完全语义化:$find.-maxdepth1-typed|head../Templates./.ssh./.tldr./.zoom./.presage./Videos./.racket./.mplayer./node_modules我们甚至可以调用echo$echo*/anaconda3/backup.doom.d/CalibreLibrary/Desktop/Documents/Downloads/dwhelper/emacs.d.backup2/Mail/Music/News/node_modules/org/Pictures/Public/snap/Templates/Test/Videos/查看手册,我们会看到-d选项:-d,--directorylistdirectoriesthemselves,nottheircontents直接试试:$ls-d..#Onlyoneis返回对当前目录使用通配符:$ls-d*/anaconda3/Downloads/News/snap/backup.doom.d/dwhelper/node_modules/Templates/'CalibreLibrary/'emacs.d.backup2/org/Test/Desktop/邮件/图片/视频/文档/音乐/公众号/d去掉了怎么办?实际实现是列出扩展通配符的所有子目录。2.只列出当前文件那么如何只列出当前文件呢?最简单的方法是find命令的语义查询:$find.-maxdepth1-typef-iname[^.]*"|nl1./#*message*-20191127-125216#2./package-lock.json3。/start.sh4./backup.gnus.el5./zero-config.el6./RMAIL7./linux-tutorial.org8./linux-tutorial-2.org9./*scratch*我们知道ls命令有-F(过滤器)选项对所有文件进行分类:$ls-Fanaconda3/News/Anaconda3-2020.02-Linux-x86_64.shnode_modules/backup.doom。d/org/backup.gnus.elpackage-lock.json'CalibreLibrary'/Pictures/Desktop/Public/Documents/RMAILDownloads/'*scratch*'dwhelper/snap/emacs.d.backup2/start.sh*linux-tutorial-2.orgTemplates/linux-tutorial.orgTest/Mail/Videos/'#*message*-20191127-125216#'zero-config.elMusic/所以我们考虑使用组合命令:$ls-F|grep.*[^/]$|nl1backup.gnus.el2linux-tutorial-2.org3linux-tutorial.org4#*message*-20191127-125216#5package-lock.json6RMAIL7*scratch*8start.sh*9zero-config.el或:$ls-l|grep^-|nl1-rw-rw-r--1gaoweigaowei6042Feb421:23backup.gnus.el2-rw-rw-r--2gaoweigaowei892May2608:34linux-tutorial-2.org3-rw-rw-r--2gaoweigaowei892May2608:34linux-tutorial.org4-rw-rw-r--1gaoweigaowei139Nov272019#*message*-20191127-125216#5-rw-rw-r--1gaoweigaowei313Dec102019package-lock.json6-rw-rw-r--1gaoweigaoweiMAILR47-rw-rw-r--1gaoweigaowei497Dec52019*scratch*8-rwxr-xr-x1gaoweigaowei1793May706:20start.sh9-rw-rw-r--1gaoweigaowei1058Mar3017:10zero-config.el至此可以断定ls没有直接列出解决方法打印出所有文件3.列出指定类型的文件虽然无法列出所有文件,但我们可以打印指定后缀的文件:$ls*.org#orgfilelinux-tutorial-2.orglinux-tutorial.org$ls*.sh#shellfilestart.sh可以讲一下两者的结合:$ls*.{org,sh}linux-tutorial-2.orglinux-tutorial.orgstart.sh4。处处排序处处排序,两个小学生考试要排名。我们首先想到的是排序命令。$ls-lh|sort-k5-h|headtotal320K-rw-rw-r--1gaoweigaowei139Nov272019#*message*-20191127-125216#-rw-rw-r--1gaoweigaowei313Dec102019package-lock.json-rw-rw-r--1gaoweigaowei497Dec52019*scratch*-rw-rw-r--2gaoweigaowei892May2608:34linux-tutorial-2.org-rw-rw-r--2gaoweigaowei892May2608:34linux-tutorial.org-rw-rw-r--1gaoweigaowei1.1KMar3017:1KMar3017:1-config.el-rwxr-xr-x1gaoweigaowei1.8KMay706:20start.shdrwx------5gaoweigaowei4.0KFeb421:32Maildrwxrwxr-x10gaoweigaowei4.0KMar1917:46emacs.d.backup2意外的是,lsS选项?贴心准备,更贴心的是,输出结果是倒序排列的。$ls-lhS|headtotal320Kdrwxr-xr-x13gaoweigaowei100KJun2215:02Downloads-rw-rw-r--1gaoweigaowei73KMar1714:27RMAILdrwxr-xr-x8gaoweigaowei20KJun2320:01Videosdrwxr-xr-x3gaoweigaowei12KApr2804:50Desktopdrwxr-xr-x7gaoweigaowei12KJun2021:15Pictures-rw-rw-r--1gaoweigaowei6.0KFeb421:23backup.gnus.eldrwxrwxr-x26gaoweigaowei4.0KJun1609:02anaconda3drwxrwxr-x2gaoweigaowei4.0KJan2713:11backup.doom.ddrwxrwxr-x6gaoweigaowei4.0KJun1609:02anaconda3drwxrwxr-x2gaoweigaowei4.0KJan2713:11backup.doom.ddrwxrwxr-x6gaoweigaowei4.0KFeb2116:17Calibre--sort可以按照时间排序等$ls-lh--sort=time|head#简写为ls-httotal320Kdrwxr-xr-x8gaoweigaowei20KJun2320:01Videosdrwxr-xr-x13gaoweigaowei100KJun2215:02Downloadsdrwxr-xr-x7gaoweigaowei12KJun2021:15Picturesdrwxrwxr-x26gaoweigaowei4.0KJun1609:02anaconda3drwxr-xr-x4gaoweigaowei4.0KJun1518:01snapdrwxr-xr-x15gaoweigaowei4.0KJun210:53Documentsdrwxrwxr-x2gaoweigaowei4.0KMay2610:50Test-rw-rw-r--2gaoweigaowei892May2608:34linux-tutorial-2.org-rw-rw-r--2gaoweigaowei892May2608:34linux-tutorial.org5.Minimalistmode有时候,我们看-l选项下的结果,眼花缭乱,头晕这时候可以试试极简模式:$ls-sS很多时候我们更关心文件的大小,-s,--size就是提供这样的服务。6.结束总结总结以上方法:#1。只列出目录ls-d*/#2。仅列出文件ls*.{txt,pdf,org}#3。按文件大小排序ls-lhS#4。时间戳排序ls-lht#5。极简模式ls-Ss以上就是本文的结尾,希望对大家有所帮助。