您的位置:首页 > 运维架构 > Shell

在shell脚本中使用*正则的问题

2018-01-02 11:44 190 查看
如下脚本#!/bin/bashls /data/pic/*
如果/data/pic目录下的文件过多,那么上述正则*号会扩展出所有满足条件的文件作为ls的参数类似于执行ls /data/pic/f1 /data/pic/f2 /data/pic/f3 /data/pic/f4 ....这样在脚本中,会导致ls命令的参数过多而报错/bin/ls: Argument list too long但是奇怪的是,如果不在脚本中执行,而在命令行中执行却没有问题
而且,如果脚本中用ls /data/pic/"*"会报如下错误,找不到文件ls: cannot access /data/pic/*: No such file or directory原因是*号不能放在双引号""中
不光是ls命令,其他所有的命令如果用到*号的话,都会存在如上的两个问题
如果我现在想移动大批量的文件到另外一个目录下,用mv命令,该怎么做呢?解决办法就是用xargs来绕过这个限制#!/bin/bashls /data/pic | xargs -I {} mv /data/pic/{} /data/image
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: