linux系统批量复制脚本,Linux系统攻略 用脚本快速实现everything程序

我们知道,在 Windows 下,有一款非常实用的神器,叫作Everything,它可以在极短的时间里,搜索出来你所想要的文件/目录,如下图示:

ee63e65e3f442b0e62d189063eb83eed.gif

Linux 下也有一些类似于 everything 的神器,比如:locate,Catfish,Tracker,等等。这些工具也十分强大,在此就不一一演示了,有兴趣的小伙伴可以自行去体验一下。

但是,其实我们自己也可以动手实现一个轻巧的 everything ,既可以满足自己的需求,也可以提高自己的技术,还能在程序媛面前秀一把~

废话不多说,我们直接上脚本:

#!/bin/sh #lazyfind #GNUAll-PermissiveLicense #Copyinganddistributionofthisfile,withorwithoutmodification, #arepermittedinanymediumwithoutroyaltyprovidedthecopyright #noticeandthisnoticearepreserved.Thisfileisofferedas-is, #withoutanywarranty. ##helpfunction functionhelpu{ echo"" echo"Fuzzysearchforfilename." echo"$0[--match-case|--path]filename" echo"" exit } ##setvariables MATCH="-iname" SEARCH="." ##parseoptions while[True];do if["$1"="--help"-o"$1"="-h"];then helpu elif["$1"="--match-case"-o"$1"="-m"];then MATCH="-name" shift1 elif["$1"="--path"-o"$1"="-p"];then SEARCH="${2}" shift2 else break fi done ##sanitizeinputfilenames ##createarray,retainspaces ARG=("${@}") set-e ##catchobviousinputerror if["X$ARG"="X"];then helpu fi ##performsearch forqueryin${ARG[*]};do /usr/bin/find"${SEARCH}""${MATCH}""*${ARG}*" done

这段脚本不是良许的原创,而是国外一个小哥的作品。这个脚本写得还是非常简洁,并且使用了一些常用的 Shell 编程技术,好好去研究它也会提高自己的 Shell 编程水平。

那么这个脚本怎么用?

第一步,创建一个脚本文件。

比如创建的脚本文件是lazy_find.sh。

$vimlazy_find.sh

然后,我们再把上面的脚本内容复制进去,再按:wq保存并退出。

接着,我们再用chmod命令赋予这个脚本可执行权限:

$chmod+xlazy_find.sh

第二步,使用脚本搜索文件。

最基本的用法,就是在脚本名称后面直接跟上要搜索的文件名称。不需要跟上完整的名称,只需要其中一部分就好,比如:

$./lazy_find.shscr

运行结果如下:

b426676b8eb8b4041652f7953e1358f3.png

可以看到,这个脚本不仅可以搜索当前路径下的文件,还可以搜索当前目录下的子目录及孙目录,也就是具有递归搜索的功能。

上面这种用法是不匹配大小写的效果,也就是说,既可以匹配到scr,也可以匹配到Scr。那么,如果想要区分大小写,需要怎么做?

只需加上-m选项即可。

$./lazy_find.sh-mscr

运行结果如下:

a972ed15fa26c99ce47c9fceab084645.png

可以看到,Scr已经没有再被匹配到了。

如果我们不想搜索当前目录,而是想要搜索指定目录,则只需加上--path,并指定想要搜索的路径即可。

比如,我们想在家目录下搜索包含有hello关键字的文件/目录,可以这么运行命令:

$./lazy_find.sh--path~hello

运行结果如下:

762b66cc7eefb887ad79b9b08acaa404.png

第三步,自定义命令调用脚本

在上面的使用方法中,我们需要自己手动去运行那个脚本文件,这样肯定是非常不方便的。我们可以自定义一个命令,比如lf,当运行这个命令时,就自动调用这个脚本,从而大大提高效率。

有 Linux 基础的小伙伴应该想到了,我们可以使用alias命令来实现这个效果。为了能够在系统重启之后lf命令依然能使用,我们直接在.bashrc里进行修改。

$vim~/.bashrc

在.bashrc文件的末尾增加这么一行语句即可:

aliaslf=~/bin/lazy_find.sh#路径别照抄,写你自己的脚本路径!!

增加完语句之后,按:wq保存并退出。然后,再使能我们的修改:

$.~/.bashrc

OK,大功告成了,我们在任意地方都可以使用这个命令了。

9ec3208508dd4ea97fbca94e40dd7763.png

小结

本文我们通过一段脚本来实现 everything 的一些基本功能,通过学习这个脚本,我们可以提高自己的 Shell 编程能力,同时也可以学会如何自定义命令来调用自己写的脚本。

本文比较基础,适合小白入门。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值