I understand that using something like [^a]* will output all the files that do not start with "a".
If I want to echo files that contain at least 5 characters that do not start with "abc" (but can contain "abc" in the middle of the filename), how should I go about doing so?
I have
echo [^abc]?????*
but the output also removes files like "123abc", which I don’t quite understand.
You don’t indicate which OS your question applies to, but one way to determine the set of matching files on Mac OS X or Linux would be:
Note that this will list only files in the current directory. If you want to include files in subdirectories, you’ll need to remove the maxdepth argument.
Also note that these commands are case-sensitive. You’ll need to use -iname and -i to make them case-insensitive.
EDIT:
If you really need to use the echo command, the following will work: