为何`xargs head`会输出文件名?如何禁用该输出?
解决
head命令输出文件名的问题 为啥会冒出文件名?
这是head命令的默认行为哦!当你一次性给它传多个文件作为输入时,它会自动在每个文件的内容前加上==> 文件名 <==的标识,方便你区分不同文件的输出结果。但如果只传单个文件,它就只会输出文件内容,不会带这个文件名头。
比如你单独跑head -1 a.txt,只会得到A1;但同时传a.txt和b.txt,它就会自动加上文件名分隔啦。
如何关掉文件名输出?
给你两种实用方法:
用
-q静默选项(推荐):
直接给head加上-q参数,它就会安静地输出内容,不再显示文件名。修改后的命令是:printf "a.txt\nb.txt" | xargs head -q -1也可以简写为
head -qn1,效果完全一致。让
xargs逐个处理文件:
通过xargs的-I参数,让它对每个文件单独执行head -1——因为每次只传一个文件给head,它就不会触发文件名输出的逻辑。命令如下:printf "a.txt\nb.txt" | xargs -I {} head -1 {}不过这种方式每次都要启动一次
head进程,处理大量文件时效率不如第一种方法。
内容的提问来源于stack exchange,提问作者Jameson
相关产品推荐
相关产品推荐

