サブディレクトリのファイルをパスワードで再帰的に圧縮し、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
もちろんあなたが選んだものになります。