我想找到所有以空行作为文件第一行的 Java 文件。我有以下内容,它只是将每个文件的第一行(和文件名)输出到输出文件“fileList.txt”中:
find . -name *java | xargs head -n1 > fileList.txt
但是,我需要对“fileList.txt”进行后处理以找到空文件名。
如何向 xargs 添加“if”条件,以便仅在第一行为空白时输出文件名?
我想找到所有以空行作为文件第一行的 Java 文件。我有以下内容,它只是将每个文件的第一行(和文件名)输出到输出文件“fileList.txt”中:
find . -name *java | xargs head -n1 > fileList.txt
但是,我需要对“fileList.txt”进行后处理以找到空文件名。
如何向 xargs 添加“if”条件,以便仅在第一行为空白时输出文件名?
不需要使用
| xargs
, find 有一个-exec
标志来对匹配的文件执行命令。此外,您需要转义*java
或 bash 会扩展参数并find
会抱怨。这个
awk
oneliner 然后应该做你需要的:NR==1
只选择第一行。/^$/
匹配空行。print FILENAME
打印匹配的文件。如果第一行不是真正的空而只包含空格,您可以修改正则表达式
where
\s*
匹配 0 个或多个空白字符。这是使用的替代方法
sed
:请注意,由于它为每个文件调用一次,因此对于大量小文件来说效率会有些低
sed
- 但是它只读取每个文件的一行。要处理除空白之外的空行,请更改
/^$/
为/^[[:blank:]]*$/
或/^[ \t]*$/
(空格制表符)。