Retire o argumento -0 e isso resolverá o problema. o -0 arg para xargs diz que os itens na lista de entrada são terminados por nulo. Você não está fazendo isso, você está passando linhas terminadas por um caractere \n .
Estou tentando excluir todos os arquivos que não iniciam com __ . Este
ls | grep -v "__" | xargs -0 rm
Rende : File name too long . Alguma ajuda?
EDITAR:
ls | grep -v "__" | awk '{print("rm "$0"")}' | /bin/bash
resolve o problema, mas eu gostaria de saber porque o primeiro não está correto. Obrigado