使用 grep 或 rg 查找不同的目录名称
Finding the distinct directory names using grep or rg
我是 Linux 命令的新手,我正在尝试在目录和包含该词的所有目录名称中递归地搜索一个说“apple”的词。
我正在使用类似于 grep 的 ripgrep(rg) 来获取其中有苹果的文件名
例如:
rg -l "apple"
给我输出:
a/fruit.c
b/fruit.c
a/fruits.c
a/fruitsnames.c
a/fruity/fruits.c
b/fru/fruit/fru/fr.c
c/frts.c
有没有办法让我只能使用唯一的父文件夹名称?
Example output I expect is to get only the folder names:
a
b
c
用grep解决也不错
非常感谢
使用 sed
删除 /
中的所有内容,然后使用 sort -u
删除重复内容
ripgrep -l apple | sed 's#/.*##' | sort -u
使用 Perl 单行代码,sort -u
保持唯一的目录:
rg -l "apple" | perl -pe 's{/[^/]+$}{}' | sort -u
或者只保留最高级别的目录:
rg -l "apple" | perl -pe 's{/.*}{}' | sort -u
我是 Linux 命令的新手,我正在尝试在目录和包含该词的所有目录名称中递归地搜索一个说“apple”的词。
我正在使用类似于 grep 的 ripgrep(rg) 来获取其中有苹果的文件名
例如:
rg -l "apple"
给我输出:
a/fruit.c
b/fruit.c
a/fruits.c
a/fruitsnames.c
a/fruity/fruits.c
b/fru/fruit/fru/fr.c
c/frts.c
有没有办法让我只能使用唯一的父文件夹名称?
Example output I expect is to get only the folder names:
a
b
c
用grep解决也不错
非常感谢
使用 sed
删除 /
中的所有内容,然后使用 sort -u
删除重复内容
ripgrep -l apple | sed 's#/.*##' | sort -u
使用 Perl 单行代码,sort -u
保持唯一的目录:
rg -l "apple" | perl -pe 's{/[^/]+$}{}' | sort -u
或者只保留最高级别的目录:
rg -l "apple" | perl -pe 's{/.*}{}' | sort -u