为什么请使用以下命令获取几乎重复的条目(从起始点开始或没有起始点。)
find . * -type f | grep '082235'
./Takeout-1/Google Photos/2017-12-07/20171207_082235.jpg.json
./Takeout-2/Google Photos/2017-12-07/20171207_082235.jpg
Takeout-1/Google Photos/2017-12-07/20171207_082235.jpg.json
Takeout-2/Google Photos/2017-12-07/20171207_082235.jpg
是否有一个find调整项/选项可以消除每个重复项?
答案 0 :(得分:3)
find
命令可以采用零个或多个起点,即将搜索其子目录的文件或目录。起点也可以是外壳程序将扩展的位置,例如*
,它会扩展到当前目录中所有非隐藏文件和目录的列表。 Find会顺序地通过其起点,因此如果通过不同起点可访问的文件重叠,它可能会输出重复的文件和/或目录。
最简单的例子是,如果您所在的目录包含文件foo
,
$ find foo foo
将生成以下输出:
foo
foo
通过运行命令find . *
,您可以作为起点:首先,当前目录.
;第二,该目录中的所有非隐藏文件。这自然会创建重复的输出:以.
作为起点的每个常规文件在顶层都不是隐藏文件(即./.bar
文件),并且不在隐藏目录中顶层(即./.baz/
目录)也将出现在列表的第二部分,而没有前导./
。
您可能只想跑步
$ find . -type f
请注意,如果您在运行find . *
时未选择具有-type f
条件的常规文件,则可能有一个项目不一定涉及仅会出现一次的隐藏文件或目录:{{1 }}条目。
答案 1 :(得分:0)
问题是您使用find . *
。这样说实际上是在搜索当前目录(该目录是递归的,因此包括其中的所有内容),然后还指定再次单独搜索其中的所有内容。请改用find .
或find *
。 (请注意,后者将跳过隐藏目录中的文件。)