2013年3月18日星期一

【转】当某个目录的文件数目超过1万个时ls*命令无结果


我得系统时Linux Advance Server 3 
当我的某个目录下的文件数目超过1万个时 
执行 ls *  命令 
或执行 tar -cvf ./*等。与文件数量有关的操作时系统提示我 
“Argument list too long” 

请问,这个问题怎么解决?是不是要改是系统的核心参数配置?

=====

恩,是这个问题,参数长。因为不是高手,至于是kernel的限制,还是glibc的限制,就不得而知了,所以也不能确定是不是改kernel。 
不过解决问题的办法倒是有。 
1.首先你回答,对于有上万文件(为什么会有这样的目录?)的目录ls*的意义是什么?你要读一读么输出么?答案是不要执行这个命令了。若一定要列出目录(例如重定向到一个文件 ls * >;list )那就用笨办法,分开列。如首先 ls [a-d]* >;>;list 然后 ls [e-p]* >;>;list 然后 ls [q-x]* >;>;list 然后 ls [!a-z]* >;>;list。呵呵,是有些笨,但是一定解决问题。世上本来就没有完美的答案。 
2.这个我不太有把握,因为不知道tar 是否会遍历整个目录。你试试。不要 tar cvf ./*  把参数改成这个目录的名字 tar cvf dirname。

没有评论: