Linux FAQ : ls , cp , rm Argument list too long
在使用 Linux
如大量档案
ls 查看
cp 複製
rm 清理
可能会遇到了 Argument list too long
大约 10 万笔以上档案 就可能会看到此讯息
主要可能是 指令搭配特殊字元 *
* 在 Linux 可说是全部都找
不过此符号有其存取上限 , 超过了就会让 指令 出现 error
ls 可以尝试看不带入 *
cp 可参考
指令 :
for i in
ls ; do cp $i $i.01 ; done
介绍 : 透过 for 迴圈 来一笔一笔检查
rm 可参考
指令 :
du -a --time --time-style='+%s' `find ./* 2>/dev/null | xargs -i ls {} ` | awk -v MAX=$date_time '{sec=(MAX-$2); print $3 " " sec}' | awk -v MAX=$lim '{if(MAX<$2) {print $1}}' | xargs rm -rf
介绍 : 用 du 和 xargs 来拆分 , du 传给 find 辅助找出档案 ( 隐藏档 ... 等 )
awk 是检查看时间超过设定值就显示 ( 要设定变数 $lim )
範例 : 找出时间大于 10 sec 档案与目录
#!/bin/kshlim=10du -a --time --time-style='+%s' `find ./* 2>/dev/null | xargs -i ls {} ` | awk -v MAX=$date_time '{sec=(MAX-$2); print $3 " " sec}' | awk -v MAX=$lim '{if(MAX<$2) {print $1}}' | xargs rm -rf
rm 更快 方案 find 参数 delete
find . -mtime +0 -delete