2024年10月Linux find命令中-exec参数的作用(2)

发布时间:

  ⑴[rootlocalhost test]# ll

  ⑵-rw-r--r-- root root - : log.log

  ⑶-rw-r--r-- root root - : log.log

  ⑷-rw-r--r-- root root - : log.log

  ⑸lrwxrwxrwx root root - : log_link.log -》 log.log

  ⑹-rw-r--r-- root root - : log.log

  ⑺-rw-r--r-- root root - : log.txt

  ⑻drwxr-xr-x root root - : scf

  ⑼drwxrwxrwx root root - : test

  ⑽drwxrwxrwx root root - : test

  ⑾[rootlocalhost test]# find 。 -type f -mtime + -exec rm {} ;

  ⑿[rootlocalhost test]# ll

  ⒀-rw-r--r-- root root - : log.log

  ⒁lrwxrwxrwx root root - : log_link.log -》 log.log

  ⒂drwxr-xr-x root root - : scf

  ⒃drwxrwxrwx root root - : test

  ⒄drwxrwxrwx root root - : test

  ⒅[rootlocalhost test]#

  ⒆在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。

  ⒇实例:在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示

  ⒈find 。 -name “*.log” -mtime + -ok rm {} ;

  ⒉[rootlocalhost test]# ll

  ⒊-rw-r--r-- root root - : log.log

  ⒋lrwxrwxrwx root root - : log_link.log -》 log.log

  ⒌drwxr-xr-x root root - : scf

  ⒍drwxrwxrwx root root - : test

  ⒎drwxrwxrwx root root - : test

  ⒏[rootlocalhost test]# find 。 -name “*.log” -mtime + -ok rm {} ;

  ⒐《 rm 。。。 。/log_link.log 》 ? y

  ⒑《 rm 。。。 。/log.log 》 ? n

  ⒒[rootlocalhost test]# ll

  ⒓-rw-r--r-- root root - : log.log

  ⒔drwxr-xr-x root root - : scf

  ⒕drwxrwxrwx root root - : test

  ⒖drwxrwxrwx root root - : test

  ⒗[rootlocalhost test]#

  ⒘在上面的例子中, find命令在当前目录中查找所有文件名以.log结尾、更改时间在日以上的文件,并删除它们,只不过在删除之前先给出提示。按y键删除文件,按n键不删除。

  ⒙实例:-exec中使用grep命令

  ⒚find /etc -name “passwd*” -exec grep “root” {} ;

  ⒛[rootlocalhost test]# find /etc -name “passwd*” -exec grep “root” {} ;

  ①root:x:::root:/root:/bin/bash

  ②root:x:::root:/root:/bin/bash

  ③[rootlocalhost test]#

  ④任何形式的命令都可以在-exec选项中使用。在上面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个root用户。