我想在Linux中找到遵循某种模式的文件,但是我对符号链接不感兴趣。
该find
命令似乎没有选项。
我该怎么办?
Answers:
-type f -xtype f
find
您使用的是哪个版本?
find (GNU findutils) 4.4.2
,这里是测试案例:echo >>asdf.txt;ln -s asdf.txt asdf.txt.lnk;find -type f;echo;find -type f -xtype f
./asdf
这似乎证明-type f
可以达到相同的结果
! -type l
例如,如果要搜索/ usr / bin中的所有常规文件(不包括symlink):
find /usr/bin/ \! -type l
您是否希望它遵循符号链接而不返回符号链接(如果它们与您的模式匹配)?
find -H
?
man find
...
-H Cause the file information and file type (see stat(2)) returned for each symbolic link specified on the command line to be those of
the file referenced by the link, not the link itself. If the referenced file does not exist, the file information and type will be
for the link itself. File information of all symbolic links not on the command line is that of the link itself.
-L Cause the file information and file type (see stat(2)) returned for each symbolic link to be those of the file referenced by the
link, not the link itself. If the referenced file does not exist, the file information and type will be for the link itself.
This option is equivalent to the deprecated -follow primary.
我已经阅读了MAN,现在看来-P也是如此,使用-type r会引发错误。还请注意,现在是DEFAULT行为。
-P请勿遵循符号链接。这是默认行为。当find检查或打印文件信息时,该文件是符号链接,则所使用的信息应取自符号链接本身的属性。
就像@AquariusPower这样说,使用 find -type f -xtype f
解决了我的问题,现在我只获得了真实文件,而不再获得符号链接。
来自:https : //linux.die.net/man/1/find
我有:
-xtype c与-type相同,除非文件是符号链接。对于符号链接:如果指定了-H或-P选项,则该文件为指向c类型文件的链接时为true;否则为true。如果已给出-L选项,则当c为'l'时为true。换句话说,对于符号链接,-xtype检查-type不检查的文件的类型。
谢谢。