是否可以仅搜索具有特定扩展属性集的文件?

mai*_*ash 0 linux permissions find grep attributes

是否可以在具有特定扩展属性的 linux 操作系统中搜索文件,如下所示: ---S--l---

---S--l---  1  root    root          0 Mar  1004:25/opt/csTuner/iba/wys/tuer_lolk
Run Code Online (Sandbox Code Playgroud)

权限中的S是什么:

S - 更改同步写入磁盘;这相当于应用于文件子集的“同步”挂载选项。

我的目标是搜索同步写入磁盘的文件。

Sve*_*ven 7

find 无法自行搜索文件属性(这是权限之外的其他内容!)。

单程:

find /location -type f  -print0 | xargs -0 lsattr | grep '^...S'
Run Code Online (Sandbox Code Playgroud)

在我的系统上,S是在lsattr输出的第三列,所以为了让它更灵活,我们可以使用更复杂的正则表达式:

find /location -type f  -print0 | xargs -0 lsattr | grep '^[^ S]*S[^ S]* '
Run Code Online (Sandbox Code Playgroud)

grep '^[^ S]*S[^ S]* '应该在哪里找到S第一列中有 的任何内容。

  • @tucuxi:如果有大量结果,`xargs` 会更有效,因为 `-exec` 会为找到的每个文件生成一个新进程,而 `xargs` 会批量处理它们。虽然这并不适用于您可能想要执行的每个可能的命令,但在大多数情况下,当您获得数千个结果时,它会产生巨大的差异。 (2认同)
  • @tucuxi 不错,但是`xargs` 自然知道这个问题,如果命令行太长,就会产生多个进程。您最终仍然会大大减少分叉进程的数量。 (2认同)