linux下如何使用find命令执行两个条件

linux下如何使用find命令执行两个条件

我正在尝试删除超过 5 天的文件(日志文件),并且我需要保留一个特定文件而不删除,我尝试使用

find . -type f -mtime +5 ! -name 'test2' -exec rm -f {} \;

但这并不成功。我使用的操作系统是 Centos 7。

答案1

正如您所看到的,我创建了以下结构来测试:

mkdir test && cd test && touch file1 file2 file3 lol test2
touch -t 200805101024 file*

获得这个:

ls -la
total 8
drwxr-xr-x 2 root   root   4096 Oct 13 18:09 .
drwxr-xr-x 4 phphil phphil 4096 Oct 13 18:09 ..
-rw-r--r-- 1 root   root      0 May 10  2008 file1
-rw-r--r-- 1 root   root      0 May 10  2008 file2
-rw-r--r-- 1 root   root      0 May 10  2008 file3
-rw-r--r-- 1 root   root      0 Oct 13 18:09 lol
-rw-r--r-- 1 root   root      0 Oct 13 18:09 test2

执行正确的命令后:

find . -type f -mtime +5 ! -name 'test2' -exec rm -f {} \;

情况正如预料的那样:

ls -la
total 8
drwxr-xr-x 2 root   root   4096 Oct 13 18:09 .
drwxr-xr-x 4 phphil phphil 4096 Oct 13 18:09 ..
-rw-r--r-- 1 root   root      0 Oct 13 18:09 lol
-rw-r--r-- 1 root   root      0 Oct 13 18:09 test2

编辑:查找有关命令或命令参数的信息:

当我不确定某个命令和/或参数的行为时,我会按以下步骤操作:

man find | less

然后您可以在命令手册中搜索您要查找的内容,如下所示:

  • 类型/
  • 写下我认为是的搜索词-mtime
  • 然后您可以通过键入 转到下一个出现的搜索词N,或者通过键入 转到上一个搜索词n

我发现了这个有趣的信息:

   -mtime n
          File's data was last modified n*24 hours ago.  See the comments for -atime to understand how  round‐
          ing affects the interpretation of file modification times.

相关内容