linux某个目录下有1.csv、2.csv、3.csv....100.csv文件,需要批量压缩成1.zip、2.zip、3.zip....100.zip,这个shell脚本怎么写?
如果压缩成1.csv.gz的话比较简单
find /path/to/dir -name *.csv | xargs gzip如果不想原文件被删除的话
find /path/to/dir -name *.csv | xargs gzip -k必须用zip的话没这么灵活了:
for ((i=1;i<101;i++)) do zip $i.zip $i.csv; donelinux一般用gz的比较多。最后一种用awk也可以做到,不过比较麻烦。
补充:zip的压缩比并不是很大,在Linux下建议使用tar命令进行归档压缩。
如tar -jcf demo.tar.bz2 FILENAME
谢谢。非常感谢。可以再请教你一个问题吗? 再把这些压缩后的1.zip 2.zip 3.zip 4.zip FTP上传到另外一台服务器的/home/xxxx/目录,另外一台机器的用户名和密码是user1/user1, 这个脚本怎么写。
追答需要设置ssh无密码访问或者安装sshpass命令
#!/bin/sh
for csvname in `ls *.csv`;do
zipname=${csvname%\.*}
zip -r $zipname $csvname
scp ${zipname}.zip [email protected]:/home/user1
done