我有一个目录,将其称为foo,在foo内有N个目录,bar1..barN。每个目录中可以有1..N个文件,所有文件均经过gpg加密。我想要解密每个文件夹中的所有文件。
#!/bin/bash
for d in *; do
cd $d
pwd
mkdir gpg
for fn in *.gpg; do
n=${fn##*/}
f=${n%.gpg}
gpg --homedir ~/Documents/gpg/ -u MY_PVT_KEY_NAME -do $f.txt $fn
mv $fn gpg
done
cd ..
done
由于某种原因,唯一经过正确处理的目录是第一个目录,其余目录均无法解密,文件被移至gpg目录,但文件未解密。
感谢您的帮助。
答案 0 :(得分:0)
您可以使用bash函数和find
来简化此工作:
gpgdecrypt()
{
tofile="${@%.gpg}.txt"
gpg --homedir ~/Documents/gpg/ -u MY_PVT_KEY_NAME -do "${tofile}" "${@}"
}
# Export the function
export -f gpgdecrypt
# Then fetch the files using find and feed the files to the gpgdecrypt fn.
find /base/path -type f -name "*.gpg" -exec bash -c 'gpgdecrypt $1' _ {} \;