Linux命令行快速技巧之定位一个文件的方法
我们都会有文件存储在电脑里——目录、相片、源代码等等。它们是如此之多。也无疑超出了我的记忆范围。要是毫无目标,找到正确的那一个可能会很费时间。在这篇文章里我们来看一下如何在命令行里找到需要的文件,特别是快速找到你想要的那一个。
好消息是Linux命令行专门设计了很多非常有用的命令行工具在你的电脑上查找文件。下面我们看一下它们其中三个:ls、tree和find。
ls
如果你知道文件在哪里,你只需要列出它们或者查看有关它们的信息,ls就是为此而生的。
只需运行ls就可以列出当下目录中所有可见的文件和目录:
$ls DocumentsMusicPicturesVideosnotes.txt
添加-l选项可以查看文件的相关信息。同时再加上-h选项,就可以用一种人们易读的格式查看文件的大小:
$ls-lh total60K drwxr-xr-x2adamadam4.0KNov213:07Documents drwxr-xr-x2adamadam4.0KNov213:07Music drwxr-xr-x2adamadam4.0KNov213:13Pictures drwxr-xr-x2adamadam4.0KNov213:07Videos -rw-r--r--1adamadam43KNov213:12notes.txt
ls也可以搜索一个指定位置:
$lsPictures/ trees.pngwallpaper.png
或者一个指定文件——即便只跟着名字的一部分:
$ls*.txt notes.txt
少了点什么?想要查看一个隐藏文件?没问题,使用-a选项:
$ls-a ..bash_logout.bashrcDocumentsPicturesnotes.txt ...bash_profile.vimrcMusicVideos
ls还有很多其他有用的选项,你可以把它们组合在一起获得你想要的效果。可以使用以下命令了解更多:
$manls
tree
如果你想查看你的文件的树状结构,tree是一个不错的选择。可能你的系统上没有默认安装它,你可以使用包管理DNF手动安装:
$sudodnfinstalltree
如果不带任何选项或者参数地运行tree,将会以当前目录开始,显示出包含其下所有目录和文件的一个树状图。提醒一下,这个输出可能会非常大,因为它包含了这个目录下的所有目录和文件:
$tree . |--Documents ||--notes.txt ||--secret ||`--christmas-presents.txt |`--work ||--project-abc |||--README.md |||--do-things.sh ||`--project-notes.txt |`--status-reports.txt |--Music |--Pictures ||--trees.png |`--wallpaper.png |--Videos `--notes.txt
如果列出的太多了,使用-L选项,并在其后加上你想查看的层级数,可以限制列出文件的层级:
$tree-L2 . |--Documents ||--notes.txt ||--secret |`--work |--Music |--Pictures ||--trees.png |`--wallpaper.png |--Videos `--notes.txt
你也可以显示一个指定目录的树状图:
$treeDocuments/work/ Documents/work/ |--project-abc ||--README.md ||--do-things.sh |`--project-notes.txt `--status-reports.txt
如果使用tree列出的是一个很大的树状图,你可以把它跟less组合使用:
$tree|less
再一次,tree有很多其他的选项可以使用,你可以把他们组合在一起发挥更强大的作用。man手册页有所有这些选项:
$mantree
find
那么如果不知道文件在哪里呢?就让我们来找到它们吧!
要是你的系统中没有find,你可以使用DNF安装它:
$sudodnfinstallfindutils
运行find时如果没有添加任何选项或者参数,它将会递归列出当前目录下的所有文件和目录。
$find . ./Documents ./Documents/secret ./Documents/secret/christmas-presents.txt ./Documents/notes.txt ./Documents/work ./Documents/work/status-reports.txt ./Documents/work/project-abc ./Documents/work/project-abc/README.md ./Documents/work/project-abc/do-things.sh ./Documents/work/project-abc/project-notes.txt ./.bash_logout ./.bashrc ./Videos ./.bash_profile ./.vimrc ./Pictures ./Pictures/trees.png ./Pictures/wallpaper.png ./notes.txt ./Music
但是find真正强大的是你可以使用文件名进行搜索:
$find-namedo-things.sh ./Documents/work/project-abc/do-things.sh
或者仅仅是名字的一部分——像是文件后缀。我们来找一下所有的.txt文件:
$find-name"*.txt" ./Documents/secret/christmas-presents.txt ./Documents/notes.txt ./Documents/work/status-reports.txt ./Documents/work/project-abc/project-notes.txt ./notes.txt
你也可以根据大小寻找文件。如果你的空间不足的时候,这种方法也许特别有用。现在来列出所有大于1MB的文件:
$find-size+1M ./Pictures/trees.png ./Pictures/wallpaper.png
当然也可以搜索一个具体的目录。假如我想在我的Documents文件夹下找一个文件,而且我知道它的名字里有“project”这个词:
$findDocuments-name"*project*" Documents/work/project-abc Documents/work/project-abc/project-notes.txt
除了文件它还显示目录。你可以限制仅搜索查询文件:
$findDocuments-name"*project*"-typef Documents/work/project-abc/project-notes.txt
最后再一次,find还有很多供你使用的选项,要是你想使用它们,man手册页绝对可以帮到你:
$manfind via:https://fedoramagazine.org/commandline-quick-tips-locate-file/
总结
以上所述是小编给大家介绍的Linux命令行快速技巧之定位一个文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!