此脚本将按日期对文件进行排序,然后将前2500个文件移动到另一个目录.
当我在脚本下运行时,系统会提示输出参数列表太长时间.任何人都可以帮我增强脚本?谢谢
当我在脚本下运行时,系统会提示输出参数列表太长时间.任何人都可以帮我增强脚本?谢谢
NUM_OF_FILES=2500 FROM_DIRECTORY=/apps/data01/RAID/RC/MD/IN_MSC/ERC/in DESTINATION_DIRECTORY=/apps/data01/RAID/RC/MD/IN_MSC/ERC/in_load if [ ! -d $DESTINATION_DIRECTORY ] then echo "unused_file directory does not exist!" mkdir $DESTINATION_DIRECTORY echo "$DESTINATION_DIRECTORY directory created!" else echo "$DESTINATION_DIRECTORY exist!" fi echo "Moving $NUM_OF_FILES oldest files to $DESTINATION_DIRECTORY directory" ls -tr $FROM_DIRECTORY/MSCERC*.Z|head -$NUM_OF_FILES | xargs -i sh -c "mv {} $DESTINATION_DIRECTORY"
你没有说,但我认为这是问题发生的地方:
ls -tr $FROM_DIRECTORY/MSCERC*.Z|head -2500 | \ xargs -i sh -c "mv {} $DESTINATION_DIRECTORY"
(您可以通过在脚本顶部添加“set -x”来验证它.)
问题是内核具有给予新进程的命令行总长度的固定最大大小,并且超过了ls命令中的大小.您可以通过不使用globbing而不是使用grep来解决它:
ls -tr $FROM_DIRECTORY/ | grep '/MSCERC\*\.Z$' |head -2500 | \ xargs -i sh -c "mv {} $DESTINATION_DIRECTORY"
(grep使用正则表达式而不是globs,因此模式看起来有点不同.)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。