在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
如果/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
相关文章推荐
- 使用linux客户端执行shell脚本创建数据库初始化数据库中文乱码问题
- Linux中使用Shell脚本插入mysql数据库中文字段值乱码问题
- 在shell脚本中使用expect实现scp传输问题
- shell脚本输出对齐问题(使用printf)
- Linux中使用Shell脚本插入mysql数据库中文字段值乱码问题
- 使用Java调用shell脚本时遇到的问题
- 关于引入pods的iOS项目使用shell脚本编译的问题与探索
- shell脚本里面通过正则匹配操作字符串的问题
- VBS脚本,中间用到了遍历文件夹,正则匹配。使用了 WScript.Shell 对象的几个方法。
- Informix 和shell脚本的交互 dbaccess使用前初始化的一些问题
- 使用eval命令解决shell脚本中函数嵌套调用中的参数问题
- redhat下使用mysql,python,redis,httpsqs,shell脚本开机自启动的一些问题与解决
- 使用Jenkins 启动shell脚本所遇到的问题
- Shell脚本的编写,sed的使用以及一些正则表达式
- ssh、scp的使用,以及shell脚本解决scp需要输入密码的问题
- 关于使用shell脚本编译C/C++问题
- windows下写的shell脚本,到linux下无法使用的问题
- 《shell 脚本攻略》--正则表达式的使用
- 使用shell脚本进行服务器系统监控——文件系统监控(3)
- 使用shell脚本进行服务器系统监控——系统负载监控(3)