When i pipe to gzip it can not accept stdin i should using xargsto convert stdin to argument
$ls
1.txt
$ls |xargs gzip && ls
1.txt.gz
every thing is ok . but when i want to compress a cpio archive file
$ls | cpio -ov | gzip > archive.cpio.gz
also it is ok and this ls | cpio -ov | xargs gzip does not work.why in the second situation gzip accept stdin and it can not accept argument?