Grep e xargs: il nome del file è troppo lungo

Sto cercando di eliminare tutti i file che non iniziano con __ . Questo

 ls | grep -v "__" | xargs -0 rm 

Rendi : File name too long . Qualsiasi aiuto?

EDIT:

 ls | grep -v "__" | awk '{print("rm \42"$0"\42")}' | /bin/bash 

risolve il problema, ma vorrei sapere perché il primo non è corretto. Grazie

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.