bash - 使用 find 命令重复结果条目

标签 bash shell find glob

为什么我使用以下命令得到几乎重复的条目(有或没有起点。):

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 是否有一个调整/选项来消除每个重复项?

最佳答案

find 命令可以采用零个或多个起点,即要搜索其子目录的文件或目录。起始点也可以是 shell 将展开的 glob,例如 *,它展开为当前目录中所有非隐藏文件和目录的列表。 Find 按顺序遍历其起点,因此如果通过不同起点可达的文件重叠,它可能会输出重复的文件和/或目录。

最简单的例子是,如果您位于包含文件 foo 的目录中,

$ find foo foo

将生成以下输出:

foo
foo

通过运行命令 find 。 * 您提供的起点:首先,当前目录,.;其次,该目录中的所有非隐藏文件。这自然会创建重复的输出:以 . 作为起点找到的每个常规文件,该文件不是顶层的隐藏文件(即 ./.bar 文件)并且不包含在顶层的隐藏目录中(即 ./.baz/ 目录)也将出现在列表的第二部分中,没有前导 ./.

你可能只是想运行

$ find . -type f

请注意,如果您正在运行 find 。 * 不选择带有 -type f 条件的常规文件,会有一个不一定涉及仅出现一次的隐藏文件或目录的项目:.条目。

关于bash - 使用 find 命令重复结果条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51456961/

相关文章:

java - MongoDB java-driver-3.2.2 计数 find() 方法的结果

linux - 在snakemake上运行管道所需的基本框架?

macos - 如何在 Mac 上恢复 .bash_profile?我的 unix 终端都没有工作

linux - 如何使用 tr 替换 '--' 字符串

python在路径中使用通配符执行shell命令

javascript - 使用 RegExp 和 .skip() 查找随机记录不起作用

regex - 带有 -regex 选项的 Linux `find` 命令无法按预期工作

mysql - cronjob mysql备份问题

linux - 根据md5哈希值比较两个文件

bash - bash脚本的循环