linux 获取所有文件列表的命令,这些文件不包含特定字符串,但仅来自与名称regex匹配的目录

bsxbgnwa  于 2022-11-22  发布在  Linux
关注(0)|答案(1)|浏览(130)

目录-

  • 主页/模块/abc/iAmAFile

iAMA文件的内容:* 随机123 *

  • 主页/模块/atoz/iAmAFile

iAMA文件的内容:* 随机123 *

  • 主页/模块/23 abc/iAmAFile/源文件

iAMA文件的内容:* 随机1 *

  • 主页/模块/123 abc/iAmAFile

iAMA文件的内容:* 随机3 *

  • 主页/模块/123 a/源代码/iAMAFile

iAMA文件的内容:* 随机1 *
我要查找的输出为:

  • 主页/模块/23 abc/src/iAmAFile(内容为 * 随机1 *)
  • home/模块/123 abc/iAmAFile(内容为 * 随机3 *)
    说明:这些文件不包含 * Random 123 *,并且是名称中带有abc的目录的子目录。
    home/Modules/123 a/src/iAmAFile不符合条件,尽管它在子文件iAmAFile中没有 * Random 123 *,但父目录或前父目录的名称不符合条件,因为它不包含 abc

其他两个不符合iAmAFile的条件,具有字符串 * Random 123 *
我想出的命令是:

ls -F Modules/*abc | grep -r -L --include="iAmAFile" "Random123"

其给出输出,

  • 主页/模块/23 abc/源代码/iAMAFile

(内容为 * 随机1 *)

  • 主页/模块/123 abc/iAmAFile**

(内容为 * 随机3 *)

  • 请输入您的当前位置。

(内容为 * 随机1 *)
它包括与命名标准不匹配的目录。

webghufk

webghufk1#

建议在path上组合使用负grepgrep -v)和正find滤波器。

grep -L "Random123" $(find . -type f -path "*abc*")

说明

find . -type f -path "*abc*"

列出路径中包含abc的目录下的所有文件。

grep -L "Random123" <files list>

列出所有不包含Random123字符串的文件。来自<files list>

相关问题