UNIX`find`并指定基目录

时间:2014-03-30 20:15:03

标签: bash find

我正在尝试在特定目录上执行find以搜索错误。数据文件存储在/shared/Simulations/的目录(从根目录)中。但是,我所做的一切似乎都无法将目录指定为find。例如,请参阅以下内容。只有最后一行才能获得任何结果。

[/]$ cd shared
[shared]$ find "/shared/Simulations/" -nowarn 2>/dev/null | xargs grep -sl "NaN"
[shared]$ find "Simulations" -nowarn 2>/dev/null | xargs grep -sl "NaN"
[shared]$ find "./Simulations" -nowarn 2>/dev/null | xargs grep -sl "NaN"
[shared]$ find "./Simulations/" -nowarn 2>/dev/null | xargs grep -sl "NaN"
[shared]$ find ./Simulations -nowarn 2>/dev/null | xargs grep -sl "NaN"
[shared]$ find ./Simulations/ -nowarn 2>/dev/null | xargs grep -sl "NaN"
[shared]$ cd Simulations
[Simulations]$ find "." -nowarn 2>/dev/null | xargs grep -sl "NaN"
... a bunch of results, like I want ...

如您所见,指定“。”工作得很好,但我没办法。指定除“。”之外的任何内容。阻止它发现任何东西。

有什么想法吗?

已解决:目录名称中的空格,使用-print0xargs -0,如下所示:

find "directory" -nowarn -print0 2>/dev/null | xargs -0 grep -sl "NaN"

1 个答案:

答案 0 :(得分:2)

由于您已将错误消息抛弃,因此您不知道find正在抱怨什么(如果它抱怨什么)。

最有可能的是,find没有遵循符号链接;它没有默认值。如果/shared/Simulations是某个地方的符号链接,那么行为是可解释的。否则,我不知所措。

find /shared/Simulations/.
如果出现问题,

应该有效;它在符号链接开始搜索之前跟随它。