当前位置: 技术问答>linux和unix
AIX一个变态问题
来源: 互联网 发布时间:2015-05-08
本文导语: 在使用IBM 的AIX遇到一个问题,当文件数很多(大概是超过1k)时,不能使用通配符号*, 如rm * , ls a* 会提示 ksh: arg list too long | 因为shell在执行前会首先将参数展开,而*代表的是当前目录下的...
在使用IBM 的AIX遇到一个问题,当文件数很多(大概是超过1k)时,不能使用通配符号*, 如rm * , ls a* 会提示 ksh: arg list too long
|
因为shell在执行前会首先将参数展开,而*代表的是当前目录下的所以文件,展开后有可能
出现参数过长的问题.可以更换shell试一试,我在bash下试验,5k个文件也没有问题.
出现参数过长的问题.可以更换shell试一试,我在bash下试验,5k个文件也没有问题.
|
for f in *; do rm $f; done
这样能删吗?
这样能删吗?
|
每种系统命令行buffer不一样大
fierygnu的方法可以解决,包装成一个alias or function
fierygnu的方法可以解决,包装成一个alias or function
|
命令行参数的最大长度的限制,应该是libc的问题,没有办法去掉的
|
我在我的机器上用Cygwin,好像参数的长度超过了32K就会出问题。
|
新方法:
ls | xargs -n 20 rm
ls | xargs -n 20 rm
|
blue_fairy(兰精灵) 说的"shell 的变量长度限制的"不如说arg list有总长限制确切,
其他unix系统也有这毛病
你可以这样做
cd [rmdir]
for f in `ls [rmdir]' #' 为上面那键, [rmdir]为需清空目录
do
rm -f $f
done
其他unix系统也有这毛病
你可以这样做
cd [rmdir]
for f in `ls [rmdir]' #' 为上面那键, [rmdir]为需清空目录
do
rm -f $f
done