Pat*_*k M 9 linux unix bash command-line find
我想find用于获取所有 simlinks 和常规文件。我可以单独使用 -type ,我可以使用 -o 将它们串在一起,但我显然不能这样做-type fl。
有没有办法浓缩这个命令?这是相当的负担。
find -type l -name node-dev -exec ls -lah {} + -o -type f -name node-dev -exec ls -lah {} +
我希望能够在没有 的情况下运行它-o,例如:
find -type lf -name node-dev -exec ls -lah {} +
手册页似乎表明这是不可能的(它没有说明额外的-type标志参数),但我想我无论如何都会问并尝试学习一些东西。
请注意,这些文件不保证任何类型的合理扩展命名结构,因此任何基于正则表达式的解决方案可能都不起作用。此外,我可以使用'!'运算符来排除像这个答案所暗示的目录,但理想情况下,我希望从搜索中排除的不仅仅是目录。
Bil*_*key 12
# Apply to only link or file type directory entries:
$ find . \( -type l -o -type f \) -name node-dev -exec ls -lah {} \;
# Apply to anything but a directory - add more with -o in between "\(" & "\)" meta-characters:
$ find . ! \( -type d \) -name node-dev -exec ls -lah {} \;
Run Code Online (Sandbox Code Playgroud)
请注意,在 find 命令中,有一个 -ls 开关可以替换 -exec 调用,请记住, find 开始可能很慢,但是必须为每个找到的文件创建一个新进程确实会更好地利用系统资源别处。