转自:http://blog.163.com/wang_ly2442/blog/static/94943407201311152369133/
编写一个Shell脚本,自动将用户主目录下所有小于5kb的文件打包成tar.gz。
程序1:
#!/bin/bash
tar zcvf ~/a.tar.gz `find ~ -type f -size -5k`
执行时报错:参数列表过长。因为find命令执行的结果太长,超出了tar的参数长度范围。
执行时报错:参数列表过长。因为find命令执行的结果太长,超出了tar的参数长度范围。
程序2:
#!/bin/bash
find ~ -type f -size -5k | xargs tar zcvf ~/a.tar.gz
第二次运行正确。xargs将find命令的执行结果过滤后分多次传给tar命令,所以没有报错。
find命令用法:
-type f :查找类型为文件
-size:根据大小查找
find ~ -type f -size -5k # 查找所有小于5kB的文件
find ~ -type f -size +5k # 查找所有大于5kB的文件
find ~ -type f -size -5c # 查找所有小于5字节的文件
find ~ -type f -size +5c # 查找所有大于5字节的文件