我需要用密码递归压缩子目录的文件,然后删除 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
当然是你选择的任何内容。