linux 打印所有文件的路径

在日常系统维护中,经常会用到配置相关文件的绝对路径,比如 cfg_file=/XXX/XXX/XXX.cfg 之类的,当在同一个文件夹中有多个配置需要引用时,往往会感到崩溃。其实只需要一条命令即可让 linux 在终端打印出当前目录下所有文件的路径,我们只需复制粘贴即可。

1
find `pwd` -type f -exec echo "{}" \;

来看看效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
find `pwd` -type f -exec echo "{}" \;|grep cfg|sort

########输出结果########
/home/hzz/conf/conf1/11.cfg
/home/hzz/conf/conf1/22.cfg
/home/hzz/conf/conf1/33.cfg
/home/hzz/conf/conf2/11.cfg
/home/hzz/conf/conf2/22.cfg
/home/hzz/conf/conf2/33.cfg
/home/hzz/conf/conf3/11.cfg
/home/hzz/conf/conf3/22.cfg
/home/hzz/conf/conf3/33.cfg
########输出结果########

实际使用:

在nagios的监控配置中,当被监控主机众多而主机以及服务又需要分类的时候,在配置 nagios.cfg 引用时,我们往往会面临如下图的情况:

nagios.cfg

也许有人会说,干嘛不用 cfg_dir 来配置呢,这确实是一种办法,但是如果那样的话,目录中就不能存在杂七杂八的文件。在日常维护中,很多人都是通过修改后缀名来备份文件,并没有转移文件进行备份的习惯。在多人对 nagios 的维护过程中,很容易造成配置无效导致 nagios 无法启动的情况。而且如果需要临时屏蔽某个配置,修改 nagios.cfg 进行屏蔽比转移文件进行屏蔽安全快捷得多。

好了,面对海量需要引用的配置文件,我们如何对 nagios.cfg 进行快速配置呢?

进入 object 目录,执行以下命令:

1
find `pwd` -type f -exec echo "cfg_file={}" \;|grep cfg|grep -v bak|sort

如图,命令的输出结果是不是很熟悉呢,直接复制粘贴进 nagios.cfg ,就可以批量引用了。当然了,也可以自定义筛选条件,输出自己想要的配置文件路径。