I'm trying to delete all the files that do not start with __. This

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

Yields : File name too long. Any help?


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

solves the problem, but I'd like to know why the first is not correct. Thanks


Take out the -0 argument and it will fix this problem. the -0 arg to xargs says that the items in the input list are null terminated. You aren't doing that, you are passing lines terminated by an \n character.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.