我正在尝试在特定目录上执行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 ...
如您所见,指定“。”工作得很好,但我没办法。指定除“。”之外的任何内容。阻止它发现任何东西。
有什么想法吗?
已解决:目录名称中的空格,使用-print0
和xargs -0
,如下所示:
find "directory" -nowarn -print0 2>/dev/null | xargs -0 grep -sl "NaN"
答案 0 :(得分:2)
由于您已将错误消息抛弃,因此您不知道find
正在抱怨什么(如果它抱怨什么)。
最有可能的是,find
没有遵循符号链接;它没有默认值。如果/shared/Simulations
是某个地方的符号链接,那么行为是可解释的。否则,我不知所措。
find /shared/Simulations/.
如果出现问题,应该有效;它在符号链接开始搜索之前跟随它。