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
跳过目录。
我正在尝试编写脚本或命令来遍历当前目录中的所有文件,并仅打印那些不包含仅在第一行以特定字符串开头的行的文件名。
尝试使用此 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
跳过目录。