操作系统:AIX,外壳:BSHshell脚本未能在目录
我已经在目录中的文件和这些文件的20K左右被命名为filename.pdf.marker和filename.pdf,我们复制该目录中的内容与下面的代码段
ls ${WORKING_DIR}/*.pdf.marker 2> /dev/null | while read FILEMARKER;
do
FILENAME=${WORKING_DIR}/$(basename ${FILEMARKER} .marker)
mv ${FILENAME} ${LOG_DIR}/.
mv ${FILENAME}.marker ${LOG_DIR}/.
done
但美中不足的是,并不是所有的文件都复制,因为LS不返回在工作目录的完整文件列表,因为文件列表太长。
你可以给我一些建议如何升级脚本而不删除循环?
thx
这将有可能更糟,因为外壳球通常将整个列表读入内存 – fork0 2012-07-06 13:23:06
,这通常比通过管道懒惰地执行更好,这比共例程更加不可预测且容易出错。考虑到这是一种极端情况,20000个文件名将大致<1M的内存。 – 2012-07-06 14:03:02
+1为唯一正确的帖子。 (但最好引用'$ {WORKING_DIR}')。 – 2012-07-06 14:31:24