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

在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)
geeklinux.cn的头像geeklinux.cn
上一篇 2024 年 3 月 23 日
下一篇 2024 年 3 月 25 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

评论列表(0条)

  • 运维开发小陈
    运维开发小陈 2024 年 3 月 26 日 上午10:03

    👍