パスワードを使用してサブディレクトリのファイルを再帰的に圧縮する方法

パスワードを使用してサブディレクトリのファイルを再帰的に圧縮する方法

サブディレクトリのファイルをパスワードで再帰的に圧縮し、bash ファイル内の圧縮されていないファイルを削除する必要があります。

zip ファイルとその他のファイルがあります。zip ファイルを再度圧縮したくありません。圧縮されていないファイルのみを圧縮し、ファイル名は圧縮ファイル名のままにしておきたいです。

たとえば、ファイル名が の場合aaa10.dat、zip ファイル名はaaa10.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」ファイルを検索して zip 圧縮する、かなり複雑なコマンドで実行できます。ただし、zip 部分を別のスクリプトにすると、表示がはるかに簡単になります。

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もちろんあなたが選んだものになります。

関連情報