
以下のコードを使用して、多数のファイルを暗号化しようとしています。
find . -name "*.vi" | sort | parallel --gnu -j 4 --workdir "$PWD" '
echo "Encrypting {/.} ..."
gpg -r [email protected] -o "/tank/test/{/.}.gpg" -e "{}"
';
これは正常に動作しますが、ファイル名にスペースや特殊文字 (! または ') が含まれていない場合に限ります。すべてのファイルの名前を変更する以外に、このコードを動作させる方法はありますか?
答え1
引用符が多すぎるようです。GNU Parallel では、{} がシェルによって直接解析されていると想定されていることに注意してください。{} と{/.} の周りの "" を削除してみてください。
# Avoid typing --gnu ever again
echo '--gnu' >> ~/.parallel/config
find . -name "*.vi" | sort |
parallel echo Encrypting {/.} ...";" gpg -r [email protected] -o /tank/test/{/.}.gpg -e {}