UBUNTU 命令在文件夹中查找文件

UBUNTU 命令在文件夹中查找文件

我想在某个文件夹中查找具有特定扩展名的文件,比如说查找“.sql“ 在 ”/备份-nfs“。稍后我将在crontab上使用此命令来自动删除一些文件。

我使用了 3 种不同的方法,它们给出了不同的结果:

方法 1:

  • 以用户身份登录。
  • /备份-nfs
  • 输入ls -lah
  • 结果是14个文件。当然,这是正确的。

方法 2:

  • 以用户身份登录。
  • /备份-nfs
  • 输入 :find . /backup-nfs/ -name "*.sql" -type f -ls
  • 结果是 14 个文件(其中 7 个是重复的,因此实际上只生成了 7 个文件)。例如:文件 A,文件 B,... 文件 G,/backup-nfs/文件 A,/backup-nfs/文件 B,... /backup-nfs/文件 G

方法3:

  • 以用户身份登录
  • 进入该用户的根目录
  • 输入 :find . /backup-nfs/ -name "*.sql" -type f -ls
  • 结果是文件太多。它搜索整个目录,而不仅仅是 /backup-nfs !

问题:

  1. 为什么方法 2 只生成了 7 个不同的文件?还有 7 个文件(大小为 0KB)被忽略了。
  2. 为什么方法 3 搜索/备份-nfs以及整个目录“/backup-nfs” 之外即使我已经指定仅搜索“ /backup-nfs”?
  3. 正确的方法是什么?我不想删除其他不符合条件的文件。

我在 Ubuntu 12.04(服务器)和 20.04(非服务器)上尝试过

答案1

问题是 :

find . /backup-nfs/

.您要求在(当前目录) 和 中搜索/backup-nfs。如果您只想在 中搜索/backup-nfs,只需说出来,无需添加当前目录。

find /backup-nfs

答案:

  1. 不知道。你可能看起来不对劲。
  2. 因为您明确要求搜索当前目录(.),而该目录恰好是用户的主目录/backup-nfs
  3. find /backup-nfs -iname "*.sql" -print0 | xargs -0 rm
    或者像@terdon 在评论中所建议的那样,-delete直接使用操作
    find /backup-nfs -iname "*.sql" -delete

还请注意,您声称这ls - lah给出了正确的结果,这意味着您有一个名为的文件夹和文件夹中-名为的文件夹,它们共同包含 14 个名为“*sql”的文件。我对此表示严重怀疑。lah/backup-nfs

相关内容