使用 find 命令复制结果条目
Duplicate result entries with find command
为什么我使用以下命令得到几乎重复的条目(以或不以起点开始。):
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
是否有 tweak/option 的 find 来删除每个重复项?
问题是您对 find . *
的使用。这实际上是说要搜索当前目录(这是递归的,因此包括其中的所有内容),然后还指定再次单独搜索其中的所有内容。请改用 find .
或 find *
。 (注意后者会跳过隐藏目录中的文件。)
find
命令可以取零个或多个起点,即要搜索其子目录的文件或目录。起始点也可以是 shell 将扩展的 globs,例如 *
,它扩展为当前目录中所有非隐藏文件和目录的列表。 Find 依次通过其起点,因此如果通过不同起点可到达的文件重叠,它可能会输出重复的文件 and/or 目录。
最简单的示例是,如果您位于包含文件 foo
、
的目录中
$ find foo foo
将生成以下输出:
foo
foo
通过 运行ning 命令 find . *
作为起点:首先,当前目录,.
;其次,该目录中的所有非隐藏文件。这自然会创建重复的输出:每个以 .
作为起点的常规文件不是顶层的隐藏文件(即 ./.bar
文件)并且不包含在隐藏目录中顶级(即 ./.baz/
目录)也将出现在列表的第二部分,没有前导 ./
.
你可能只想运行
$ find . -type f
请注意,如果您 运行宁 find . *
不选择具有 -type f
条件的常规文件,将会有一个不一定涉及隐藏文件或目录的项目只会出现一次:.
条目。
为什么我使用以下命令得到几乎重复的条目(以或不以起点开始。):
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
是否有 tweak/option 的 find 来删除每个重复项?
问题是您对 find . *
的使用。这实际上是说要搜索当前目录(这是递归的,因此包括其中的所有内容),然后还指定再次单独搜索其中的所有内容。请改用 find .
或 find *
。 (注意后者会跳过隐藏目录中的文件。)
find
命令可以取零个或多个起点,即要搜索其子目录的文件或目录。起始点也可以是 shell 将扩展的 globs,例如 *
,它扩展为当前目录中所有非隐藏文件和目录的列表。 Find 依次通过其起点,因此如果通过不同起点可到达的文件重叠,它可能会输出重复的文件 and/or 目录。
最简单的示例是,如果您位于包含文件 foo
、
$ find foo foo
将生成以下输出:
foo
foo
通过 运行ning 命令 find . *
作为起点:首先,当前目录,.
;其次,该目录中的所有非隐藏文件。这自然会创建重复的输出:每个以 .
作为起点的常规文件不是顶层的隐藏文件(即 ./.bar
文件)并且不包含在隐藏目录中顶级(即 ./.baz/
目录)也将出现在列表的第二部分,没有前导 ./
.
你可能只想运行
$ find . -type f
请注意,如果您 运行宁 find . *
不选择具有 -type f
条件的常规文件,将会有一个不一定涉及隐藏文件或目录的项目只会出现一次:.
条目。