在bash脚本中加密多个文件

时间:2013-08-07 15:18:48

标签: bash shell scripting

使用以下脚本加密文件

#!/bin/bash
# crypten - a script to encrypt files using openssl

FNAME=$1

if [[ -z "$FNAME" ]]; then
echo "crypten <name of file>"
echo "  - crypten is a script to encrypt files using des3"
exit;
fi

openssl des3 -salt -in "$FNAME" -out "$FNAME.des3"

这只允许一个文件和一个文件输出,我希望能够做的是具有特定扩展名的批量加密文件。即如果我有1.text 2.text 3.text 4.text的文件夹我希望能够执行crypten * .text并将所有四个文件转换为.des3

2 个答案:

答案 0 :(得分:2)

使用Unix哲学 - 一个工具用于一个特定任务
你想要加密一个文件,没关系 - 你可以使用你自己的脚本 您希望为目录中的每个文件应用脚本 - xargs做得很好:

ls -1 dir_name/*.text | xargs -d '\n' -i crypten {}

答案 1 :(得分:1)

迭代位置论证;使用$#检查是否收到了至少一个,并$@(引用)按顺序检索每个。

if (( $# == 0 )); then
    echo "crypten <file1> [ <file2> ... ]"
    echo "  - crypten is a script to encrypt file using des3"
    exit
fi
for FNAME in "$@"; do
    openssl des3 -salt -in "$FNAME" -out "$FNAME.des3"
done