Bash - 仅打印当前目录第一行不包含特定字符串的文件名的命令或脚本

Bash - command or script for printing only file names that NOT contain specific string in the first line in current catalog

我正在尝试编写脚本或命令来遍历当前目录中的所有文件,并仅打印那些不包含仅在第一行以特定字符串开头的行的文件名。

尝试使用此 grep -i "echo" * 命令获取所有出现的“echo”字符串,但如何添加检查第一行并仅返回文件名?

Shellcheck-clean 代码打印当前目录中第一行不包含字符串 'echo' 的所有文件的名称:

#! /bin/bash -p

unwanted='echo'
for file in *; do
    [[ -f $file ]] || continue
    IFS= read -r first_line <"$file"
    [[ $first_line == *"$unwanted"* ]] || printf '%s\n' "$file"
done

使用 GNU grep:

grep -LD skip -d skip -i '^echo' *

-L 列出 匹配文件,-D skip 跳过设备、FIFO 和套接字文件,-d skip 跳过目录。