如何使用密码递归压缩子目录的文件

如何使用密码递归压缩子目录的文件

我需要用密码递归压缩子目录的文件,然后删除 bash 文件中删除未压缩的文件。

里面有zip文件和其他文件,不想再压缩zip文件,只想压缩未压缩的文件,并保留文件名作为压缩文件名。

例如,如果文件名是,aaa10.dat那么文件名必须是 zipaaa10.zip并用密码压缩。

压缩后,我想删除未压缩的文件。

[目录结构]

dir1/aaa1.dat ... aaa10.dat
dir1/dir2/dir2_subdir1/aaa.zip, aaa.dat
dir1/dir3/dir3_subdir1/aaa1.dat ... aaa10.dat
dir1/dir3/dir3_subdir2/aaa1.dat ... aaa20.dat, aaa1.zip ... aaa10.zip
dir1/dir3/dir3_subdir2/dir3_subdir2_subdir1/aaa1.dat ... aaa20.dat, aaa1.zip ... aaa10.zip

答案1

你可以用一个相当复杂的find命令来做到这一点,这个命令会找到所有的“.dat”文件然后将它们压缩。但是把压缩部分放到单独的脚本中更容易展示:

find . -name '*.dat' -exec my-script {} \;

my-script(必须在您的 中PATH):

#!/bin/sh
zip -P my-password -m $(dirname $1)/$(basename $1 .dat).zip $1

my-password当然是你选择的任何内容。

相关内容