我有一个目录“X”,其中有一个名为“lib”的子目录,以及其他文件和目录。这个“lib”子目录本身又有一堆目录和文件。我试图使用它来find
获取目录 X 中除与“lib”相关的内容之外的所有内容的路径名。
因此,我尝试这样做:
find -not -name "lib*"
./lib
这将从输出中排除路径,但将包括 lib 目录本身中的所有内容,即lib/*
。我也尝试过:
find -not -name "lib/*"
但这给了我同样的结果
PS:我也试过了,find -not -name lib*
但结果还是一样
答案1
选项仅-name
查看find
单个文件名,而不是文件的完整路径。如果要匹配完整路径,则需要该-path
选项。
我创建的快速测试树中的一些示例:
$ find .
.
./b
./a
./lib
./lib/la
./lib/lb
您正在执行的操作-name
(跳过lib
自身,但不会跳过其中的文件,lib
因为它仅查看单个文件名):
$ find . -not -name 'lib*'
.
./b
./a
./lib/la
./lib/lb
你可能想要的是:
$ find . -not -path './lib*'
.
./b
./a
请注意,因为-path
看着满的./
路径,现在我还需要添加初始前缀。