linux 在内容中查找具有自己名称的文件

eh57zj3b  于 2022-11-02  发布在  Linux
关注(0)|答案(1)|浏览(194)

我想知道如何使用Bash,我可以显示文件夹中所有文件的名称,在文本中有他们的名字?
例如,file.txt在其内容中具有名称“Lorem ipsum dolor sit amet,fileconsectetur adipiscing elit.”,而文件file2.txt:
[谚]一个人痛苦,一个人死亡,一个人死亡。
没有单词“file2”,因此将跳过它
我知道我应该使用“grep”,但我不确定在这种情况下如何使用它

uidvcgyl

uidvcgyl1#

没有指出您是否关心文件名的匹配是否是不同文件名的子字符串
假设您不关心这个问题,那么通过使用awk可以简化解决方案,它可能如下所示(* 正如您所看到的,我在脚本中构建了测试数据 *):


# !/bin/sh

Fname="junk_38.input"

cat >"${Fname}" <<-!EnDoFfIlE
make my day!
123
how are you?
${Fname}
yabadabadoo!
abc
let the force be with you!
!EnDoFfIlE

ls -l "${Fname}"

awk -v fName="${Fname}" 'BEGIN{
    hit=0 ;
}{
    if( index( $0, fName ) > 0 ){
        hit=1 ;
        exit ;
    } ;
}END{
    if( hit == 1 ){
        printf("MATCH: %s [%s]\n", fName,NR ) ;
    }else{
        printf("NO_MATCH: %s [%s]\n", fName, NR ) ;
    } ;
}' <"${Fname}"

此解决方案会提供找到相符项目的行号,并在遇到第一个执行严修时结束。它也会报告未找到相符项目之档案的检查行数(相当于wc -l)。

相关问题