我正在使用以下命令搜索可执行文件名 pxe
find / -type f -executable -print | grep pxe$
这在 RHEL 中运行良好,但在 SLES 中,快照目录会搞乱搜索。如何在搜索中排除快照目录。
我尝试过这些组合但确实有效。
localhost:~ # find / -type f -executable -print | grep pxe$
find: File system loop detected; ‘/.snapshots/1/snapshot’ is part of the same file system loop as ‘/’.
/root/pxe
/root/xyx/pxe
/pxe
localhost:~ # find / -type f -executable -print -not -path "*/.snapshots/*" | grep pxe$
find: File system loop detected; ‘/.snapshots/1/snapshot’ is part of the same file system loop as ‘/’.
/root/pxe
/root/xyx/pxe
/pxe
localhost:~ #
localhost:~ #
localhost:~ # find / -type f -executable -print -not -path "/.snapshots/*" | grep pxe$
find: File system loop detected; ‘/.snapshots/1/snapshot’ is part of the same file system loop as ‘/’.
/root/pxe
/root/xyx/pxe
/pxe
我不希望在运行 find 时显示 /.snapshots/。有什么建议吗?
快照目录位于 /
test:~ # cd /
test:/ # ls -la
total 52588
drwxr-xr-x 1 root root 224 Apr 6 16:28 .
drwxr-xr-x 1 root root 224 Apr 6 16:28 ..
-rw-r--r-- 1 root root 0 Mar 30 15:03 .acce
drwxr-x--- 1 root root 38 Mar 20 12:25 .snapshots
-rwxrwxrwx 1 root root 26559432 Oct 14 12:23 pxe
答案1
与所有 Linux 一样,man
应该是您的第一站,通常只需找到与您要查找的内容相匹配的术语即可。man find
并/skip
产生:
-修剪
正确;如果文件是目录,则不要深入其中。如果给出了 -depth,则 -prune 无效。由于 -delete 隐含 -depth,因此不能同时使用 -prune 和 -delete。例如,要跳过目录 src/emacs 及其下的所有文件和目录,并打印找到的其他文件的名称,请执行以下操作:
find . -path ./src/emacs -prune -o -print