ubuntu系统压缩目录下所有文件(文件名带有空格),每个文件一个压缩包(.zip)

82 阅读1分钟

ubuntu系统压缩目录下所有文件(文件名带有空格),每个文件一个压缩包(.zip)

1 目录下文件

image.png

2 遍历文件夹

for f  in `ls  .`; 
do  
echo ${f}; 
done          

复制上面代码到终端,回车,打印结果:

image.png

可以看到,如果文件名中有空格,会被作为分隔符,遍历出五个结果,如果有更多空格,会有更多结果

3 保存系统分隔符,设置新分隔符

echo "$IFS" | od -b  #转换成二进制查看,因为系统分隔符有空格,直接打印看不到
IFS_OLD=$IFS
echo "$IFS_OLD" | od -b
IFS=$'\n'   #设置分隔符为换行
echo "$IFS" | od -b

复制上面代码到终端,回车

image.png

4 重新遍历

for f  in `ls  .`; 
do  
echo ${f}; 
done          

image.png

5 压缩

for f  in `ls  .`; 
do  
echo ${f%.*}; #截取文件名,去掉扩展名
zip ${f%.*}.zip ${f} #可以自定义文件夹,比如zip /home/user/zip/${f%.*}.zip ${f}
done

image.png

5 还原分隔符

IFS=$IFS_OLD
echo "$IFS" | od -b