在Linux的日常运维中,我们经常能够用到find命令对文件进行一些批量操作,例如批量导出日志等等,那么如何使用find命令将匹配出的文件执行操作呢?
我们先使用find
命令查找一下我的linux主机中所有log
日志文件
[root@localhost ~]# find / -type f -iname "*.log"
/var/log/sssd/sssd.log
/var/log/sssd/sssd_implicit_files.log
/var/log/sssd/sssd_nss.log
/var/log/tuned/tuned.log
/var/log/audit/audit.log
/var/log/anaconda/anaconda.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
/var/log/anaconda/packaging.log
/var/log/anaconda/storage.log
/var/log/anaconda/lvm.log
我们可以看到 使用find命令查找出了所有以log
扩展名结尾的日志文件,可以看到他们都存放在 /var/log/
中的子文件夹中,如果我们需要收集这些日志的话,我们可以采用以下命令
[root@localhost ~]# find / -type f -iname "*.log" -exec cp -rfvp {} /root/testfile/ \;
'/var/log/sssd/sssd.log' -> '/root/testfile/sssd.log'
'/var/log/sssd/sssd_implicit_files.log' -> '/root/testfile/sssd_implicit_files.log'
'/var/log/sssd/sssd_nss.log' -> '/root/testfile/sssd_nss.log'
'/var/log/tuned/tuned.log' -> '/root/testfile/tuned.log'
'/var/log/audit/audit.log' -> '/root/testfile/audit.log'
'/var/log/anaconda/anaconda.log' -> '/root/testfile/anaconda.log'
'/var/log/anaconda/X.log' -> '/root/testfile/X.log'
'/var/log/anaconda/program.log' -> '/root/testfile/program.log'
'/var/log/anaconda/packaging.log' -> '/root/testfile/packaging.log'
'/var/log/anaconda/storage.log' -> '/root/testfile/storage.log'
'/var/log/anaconda/lvm.log' -> '/root/testfile/lvm.log'
我们可以看到,命令中使用了-exec
参数 后跟的是command
命令,它的终止是以;(分号)来结束,所以这句话命令后面的分号是必不可少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠 “” 就是我们常说的转义符,其他的命令使用方法大体一致,自行摸索即可。
原创文章,作者:geeklinux.cn,如若转载,请注明出处:https://www.geeklinux.cn/jsjc/1200.html
评论列表(0条)
👍