ls 命令即 list directory contents是我们最为熟悉的Linux命令。它就如车载或者手机中的导航地图,彻底解放了我们的大脑,片刻不能离身。否则我们下楼取个快递,都得绕18道弯才能勉强找回家。
我们在前面的“Linux手册”课程中,大量应用ls这个地图查看器。
1.只列出当前的目录文件
我们先从一个具体的问题出发,如何单单打印出目录文件。
如果使用find命令,不仅简单,而且符合完全语义化的表达:
- $ find . -maxdepth 1 -type d | head
- .
- ./Templates
- ./.ssh
- ./.tldr
- ./.zoom
- ./.presage
- ./Videos
- ./.racket
- ./.mplayer
- ./node_modules
我们甚至可以调用echo
- $ echo */
- anaconda3/ backup.doom.d/ Calibre Library/ Desktop/ Documents/ Downloads/ dwhelper/ emacs.d.backup2/ Mail/ Music/ News/ node_modules/ org/ Pictures/ Public/ snap/ Templates/ Test/ Videos/
查阅手册,我们会看到-d的选项:
- -d, --directory
- list directories themselves, not their contents
直接运行试试:
- $ ls -d .
- . # 只返回了一个当前目录
改用通配符:
- $ ls -d */
- anaconda3/ Downloads/ News/ snap/
- backup.doom.d/ dwhelper/ node_modules/ Templates/
- 'Calibre Library/' emacs.d.backup2/ org/ Test/
- Desktop/ Mail/ Pictures/ Videos/
- Documents/ Music/ Public/
如果将d去掉呢?
实际的执行是将扩展的通配符的子目录全部都列了出来。
2.只列出当前的文件
那么如何单单列出来当前的文件呢?最简单的方法还是 find 命令的语义化查询:
- $ find . -maxdepth 1 -type f -iname "[^.]*" |nl
- 1 ./#*message*-20191127-125216#
- 2 ./package-lock.json
- 3 ./start.sh
- 4 ./backup.gnus.el
- 5 ./zero-config.el
- 6 ./RMAIL
- 7 ./linux-tutorial.org
- 8 ./linux-tutorial-2.org
- 9 .
- # 2.只列出文件
- ls *.{txt,pdf,org}
- # 3.文件大小排序
- ls -lhS
- # 4.时间戳排序
- ls -lht
- # 5.极简模式
- ls -Ss
以上本文收尾,盼对大家有点滴帮助。