Linux如何使用find命令将查找出来的文件删除或者复制到另一个位置?

在Linux的日常运维中,我们经常能够用到find命令对文件进行一些批量操作,例如批量导出日志等等,那么如何使用find命令将匹配出的文件执行操作呢?
我的博客:https://blog.itwk.cc

我们先使用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命令,它的终止是以;(分号)来结束,所以这句话命令后面的分号是必不可少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠 “” 就是我们常说的转义符,其他的命令使用方法大体一致,自行摸索即可

你可能感兴趣的:(Linux,linux,运维,python)