我不确定我在这方面做错了什么。我已经阅读了很多帖子和网站,但仍然遇到问题。
我需要检查系统中是否有过去一天更改的文件,但我需要跳过某些已安装的文件夹,因为它们安装到具有大量 TB 的驱动器上。
设置如下:我有几个驱动器安装到 /usr/local/connect/ 内的文件夹 /usr/local/connect/logs --> 安装到 NFS /usr/local/connect/DR01 --> 安装到DR 还分享了一些这样的...
我想运行排除这些目录的普通查找命令(或任何适用于此目的的命令)。以下是我尝试过但似乎不起作用的方法。
寻找 。 ! -path“/usr/local/connect/”-type f-name“*.txt”-mtime -1
寻找 。 -type f -path“/usr/local/connect/”-prune -o -name“*.txt”-mtime -1
这些似乎都不起作用。我也尝试过以不同的顺序执行此操作(例如首先 -type f 或首先修剪,等等)。但我读到修剪删除了前进的路径。这看起来应该是一件很容易做到的事情。如果您看到我的错误,请告诉我!提前致谢!
答案1
-path "/usr/local/connect/"
仅在完全匹配的文件路径上匹配/usr/local/connect/
。这永远不会匹配,因为find .
所有路径都将以.
所以你会想要:
find / -path '/usr/local/connect/*' -type d -prune -o \
-name '*.txt' -type f -mtime -1 -print
这-print
也很重要。如果没有它,就会有一个隐式的-print
for 文件匹配整个表达式(因此 的两个部分-o
)。
请注意,您还可以使用它-xdev
来防止跨越任何文件系统边界。
如果您想find .
在当前目录为 时运行它/usr/local
,则必须是:
cd /usr/local &&
find . -path './connect/*' -type d -prune -o \
-name '*.txt' -type f -mtime -1 -print