[CentOS] ls returns file doesn't exist, find finds it??

Thu Feb 24 15:54:09 UTC 2011
neubyr <neubyr at gmail.com>

Thanks for the replies everyone.

Les, you were right about meta-characters. The file name contains
"double-quotes" (bad log4j config) and that's causing the problem.
e.g. /opt/apps/tomcat/logs/apache.log\".-2010-09-24\"
The ls command works fine after escaping double quotes:  \" .

My objective was to delete files matching find-pattern using 'xargs
rm'. I wanted to do 'ls' before I delete these files permanently. I
guess I can use 'find -delete' action instead which is working fine.

--
neubyr.


On Thu, Feb 24, 2011 at 7:59 AM, Les Mikesell <lesmikesell at gmail.com> wrote:
> On 2/23/11 10:54 PM, neubyr wrote:
>> Howdy,
>>
>> I am getting some errors with find and ls command - such that find is
>> able to see a file whereas ls says the file doesn't exist. Initially I
>> was trying find and ls together as:
>> # find ./ -type f -mtime +15 | xargs ls
>>
>> Similar behavior is seen even when I execute both commands separately.
>> Any thoughts on what might be wrong here?
>
> Can you give an example of a path that find returns and the output of
> ls -l 'that_path_in_quotes'
> My first guess is that you have shell metacharacters (like spaces) in the file
> or directory names that the shell parses/expands if you don't quote them.  Using
> the GNU --print0 extension to find and the matching -0 option to xargs might fix it.
>
> --
>   Les Mikesell
>    lesmikesell at gmail.com
> _______________________________________________
> CentOS mailing list
> CentOS at centos.org
> http://lists.centos.org/mailman/listinfo/centos
>