我使用以下命令在 dir 目录中的所有非空文本文件中写入 NotEmpty.txt 文件:
find dir/ -not -empty -ls | grep -E "*.txt" > NotEmpty.txt
我想只打印匹配的正则表达式而不是该行的所有信息。怎么可能?
答案 0 :(得分:2)
问题是你正在针对每场比赛执行ls
,因此输出包含很多东西。而是使用此find
命令打印名称。
请注意,事实上,您可以一次性完成所有操作,包括仅选择.txt
个文件:
find your_dir/ -not -empty -name "*.txt" -print > NotEmpty.txt
# ^^^^^^^^^^^^^ ^^^^^^
# | |
# just .txt files |
# |
# print its name instead of `ls`ing it
您也可以说-type f
只检查文件,实际上我猜这是-not -empty
参数所假设的。
答案 1 :(得分:1)
使用grep的-o
参数指定您只需要匹配的部分。
示例:
$ echo foo bar baz | grep -o "foo"
foo