GNU/Linux 技巧:如何快速的找到一个文件
在使用计算机的过程中,我们都有着这么一个需求:找文件!!
“卧槽,我的 XXX 文件放哪儿去了?”Σ(っ °Д °;)っ
“XXX 文件不应该就在 XXX 文件夹里吗?!咋个找球不到啊?”‧º·(˚ ˃̣̣̥᷄⌓˂̣̣̥᷅ )‧º·˚
“MMP!1000 多个文件!我找你麻痹!!”(╯‵□′)╯︵┴─┴
在一些没有 GUI 的 GNU/Linux 中,遇到这种情况更是雪上加霜。好在 GNU/Linux 的终端中有着不少优秀的命令行工具,可以帮助我们解决上述问题。
下面就介绍三个最常用的在 GNU/Linux 中快速找文件的命令行工具:ls、tree 和 find
ls🔗
ls
可能是所有 Linuxer 学习到的第一个命令了 {{< spoiler >}}cd: 喵喵喵?{{< /spoiler >}} 它既简单又实用,如果给 GNU/Linux 中所有的命令使用频率排个名的话,ls
绝对在前 5。
ls
的作用就是列出指定目录下 (默认当前目录) 的所有可见的文件与文件夹,就像这样:
$ ls
Desktop Documents Downloads Dropbox Music Pictures Public Steam Templates Videos
添加 -l
选项则可以查看文件的更多信息。同时再加上 -h
则可查看到文件文件的大小:
$ ls -lh
drwxr-xr-x 2 mogeko mogeko 4.0K 11月 21 21:24 Desktop
drwxr-xr-x 3 mogeko mogeko 4.0K 11月 21 12:39 Documents
drwxr-xr-x 4 mogeko mogeko 4.0K 11月 21 20:37 Downloads
drwxrwx--- 5 mogeko mogeko 4.0K 11月 21 15:46 Dropbox
drwxr-xr-x 2 mogeko mogeko 20K 10月 27 19:06 Music
drwxr-xr-x 3 mogeko mogeko 4.0K 11月 9 11:58 Pictures
drwxr-xr-x 2 mogeko mogeko 4.0K 10月 27 10:30 Public
drwxrwxr-x 3 mogeko mogeko 4.0K 10月 26 19:45 Steam
drwxr-xr-x 2 mogeko mogeko 4.0K 10月 27 10:30 Templates
drwxr-xr-x 2 mogeko mogeko 4.0K 11月 20 21:29 Videos
ls
也可以查看指定目录下的文件:
$ ls /etc/apt
apt.conf.d sources.list sources.list.d trusted.gpg
preferences.d trusted.gpg.d
或者使用通配符:
$ ls *.yaml
cangjie5.schema.yaml luna_pinyin.extended.dict.yaml
default.custom.yaml luna_pinyin.extra_hanzi.dict.yaml
default.yaml luna_pinyin_fluency.schema.yaml
installation.yaml luna_pinyin.kaomoji.dict.yaml
luna_pinyin.cn_en.dict.yaml luna_pinyin.schema.yaml
luna_pinyin.computer.dict.yaml luna_pinyin_simp.schema.yaml
luna_pinyin.custom.yaml luna_pinyin_tw.schema.yaml
luna_pinyin.email.dict.yaml symbols.yaml
luna_pinyin.emoji.dict.yaml user.yaml
luna_pinyin.english.dict.yaml
想要查看隐藏文件?加个 -a
就可以了:
ls -a
. archetypes content .gitignore public resources themes
.. config.toml .git LICENSE.md README.md static .travis.yml
ls
还可以用来在无聊时打发时间😂😂
在终端中执行以下命令,然后看着屏幕滚就可以了;在一下比较大型的系统中,可以滚一两个小时呢!!
ls -R /
看腻了可以用 Ctrl + C
强制中断执行 | ・ω・’)
更多与 ls
相关的选项,可以查看 ls
的文档,通过以下命令查看
man ls
tree🔗
如果你想以更加直观的方式查看目录结构,tree
是个不错的选择。
一般的 GNU/Linux 发行版上默认是没有安装 tree
的,我们先使用包管理器安装 tree
Archlinux🔗
pacman -S tree
Ubuntu / Debian🔗
sudo apt-get install tree
Fedora / CentOS🔗
sudo yum install tree
如果不带任何参数的运行 tree
,将会从当前目录开始,遍历当前目录下的所有子目录,形成一个树状图。想这样:
$ tree
.
├── input.conf
├── mpv.conf
├── mpv_sub-delay.json
├── scripts
│ ├── autoload.lua
│ ├── find_subtitles.lua
│ └── save-sub-delay.lua
└── watch_later
├── 0E8222A71582842B0AE77E97F92C8ADF
├── 3711F58064794A225929BB4E40406BB0
├── 64DE4D53E1D5133254D3566CB3DFE548
├── BB76733FFBAC24FA381FA1C04452948E
├── D1EB1EE7CC315044D40B56E68B717219
└── E45A1D2ED916D7DFD4109ADFD1E4A829
2 directories, 12 file
这个命令非常有用,特别是对于我们这些 Bloger 来说;比如以下场景:
简单讲解一下各个文件的作用
.
├── Atom # 供单独使用的脚本
│ ├── Office_2016
│ │ ├── Office_Project_Pro.cmd # 将零售版的 Office Project Plus 转换为批量授权版, 然后激活
│ │ ├── Office_Project_Std.cmd # 将零售版的 Office Project 转换为批量授权版, 然后激活
│ │ ├── Office_Retail2VOL+Activate.cmd # 将零售版的 Office 转换为批量授权版, 然后激活
│ │ ├── Office_Retail2VOL_Only.cmd # 仅仅将零售版的 Office 转换为批量授权版, 不激活
│ │ ├── Office_Visio_Pro.cmd # 将零售版的 Office Visio Plus 转换为批量授权版, 然后激活
│ │ ├── Office_Visio_Std.cmd # 将零售版的 Office Visio 转换为批量授权版, 然后激活
│ │ ├── Office_VOL_Activate.cmd # 激活批量授权版的 Office
│ │ └── 查看 Office 状态.cmd
│ ├── Office_2013
│ │ ├── 与 Office_2016 同理, 就不单独介绍了
│ ├── Office_2010
│ │ ├── 与 Office_2016 同理
│ └── Windows_Activate.cmd # 激活批量授权版的 Windows
├── KMS 服务可用性测试.url # 检测 KMS 服务器是否挂了
├── README.md
└── Run.cmd# 激活脚本
对于那些需要介绍每个文件的功能的场景,tree
简直是神器好不好!!
扯远了 | ・ω・’)
如果不想列地太多,可以使用 -L [数字]
选项来指定查找的层数,例如:
$ tree -L 1
.
├── input.conf
├── mpv.conf
├── mpv_sub-delay.json
├── scripts
└── watch_later
2 directories, 3 files
你也可以显示指定目录的树状图:
$ tree ~/.config/mpv
.
├── input.conf
├── mpv.conf
├── mpv_sub-delay.json
├── scripts
│ ├── autoload.lua
│ ├── find_subtitles.lua
│ └── save-sub-delay.lua
└── watch_later
├── 0E8222A71582842B0AE77E97F92C8ADF
├── 3711F58064794A225929BB4E40406BB0
├── 64DE4D53E1D5133254D3566CB3DFE548
├── BB76733FFBAC24FA381FA1C04452948E
├── D1EB1EE7CC315044D40B56E68B717219
└── E45A1D2ED916D7DFD4109ADFD1E4A829
2 directories, 12 file
如果需要列出的是一个很大的树状图,可以配合 less
使用:
tree | less
同样的,要查看更多关于 tree
的信息:
man tree
find🔗
如果不知道文件在哪里怎么办呢?总不能从 /
目录开始遍历吧!这时你需要 find
如果不加任何参数的运行 find
,它将会递归列出改目录下的所有文件和目录:
$ find
.
./mpv_sub-delay.json
./scripts
./scripts/find_subtitles.lua
./scripts/autoload.lua
./scripts/save-sub-delay.lua
./mpv.conf
./watch_later
./watch_later/E45A1D2ED916D7DFD4109ADFD1E4A829
./watch_later/3711F58064794A225929BB4E40406BB0
./watch_later/0E8222A71582842B0AE77E97F92C8ADF
./watch_later/64DE4D53E1D5133254D3566CB3DFE548
./watch_later/BB76733FFBAC24FA381FA1C04452948E
./watch_later/D1EB1EE7CC315044D40B56E68B717219
./input.conf
但是 find
真正强大的地方在于你可以使用文件名进行搜索:
$ find -name autoload.lua
./scripts/autoload.lua
或是使用通配符:
$ find -name *.lua
./scripts/find_subtitles.lua
./scripts/autoload.lua
./scripts/save-sub-delay.lua
你也可以根据文件大小进行搜索 (对于硬盘空间不足的时候特别有用)
列出所有大于 1 G 的文件:
$ find -size +1G
./Downloads/Asura.2012.BluRay.1080p.x264-MySiLU [PublicHD]/Asura.2012.BluRay.1080p.x264.AC3-MySilu.mkv
./Downloads/Starship.Troopers.Traitor.of.Mars.2017.720p.WEB-DL.DD5.1.H264-FGT/Starship.Troopers.Traitor.of.Mars.2017.720p.WEB-DL.DD5.1.H264-FGT.mkv
也可以搜索具体的文件目录,例如我们想在 .config/mpv
目录中查找所有后缀为 .lua
的文件:
$ find .config/mpv -name *.lua
.config/mpv/scripts/find_subtitles.lua
.config/mpv/scripts/autoload.lua
.config/mpv/scripts/save-sub-delay.lua
更多的信息可以查看 man 手册:
man find