5

I have a lot of files encrypted with gpg. All files have the same password. Is it possible to use xargs to decrypt files?

ls | xargs -n 1 gpg asks for the password for every file.

1
  • You could save your password to a variable which gpg can be called with. It's also a good idea to avoid depending on the output of ls for operations such as this. Commented Jul 6, 2012 at 14:12

2 Answers 2

6

Run gpg-agent or a similar program. Set up gpg to look for a running agent, as explained in the documentation. Enter the passphrase in the agent once and for all (for this session).

Note that ls | xargs -n 1 gpg only works if your file names do not contain any special characters. Generally speaking, don't parse the output of ls, and xargs is pointless when you want to run the program once per file. Do this instead:

for x in *.gpg; do gpg "$x"; done 
4

You can do this :

for i in *; do /usr/bin/gpg --batch --passphrase-fd 3 --decrypt $i 3<pass > $i.decoded ; done 

When "pass" is a complete path to a file that contains your passphrase.

Files will be decoded to [same name].decoded.

3
  • 3
    Don't use * here. Use ./* so that you can be sure that the expansion of $i does not begin with - (making it look like another option). Commented Jul 6, 2012 at 14:49
  • 1
    Can also use --passphrase or --passphrase-file instead. Commented Jul 6, 2012 at 14:54
  • @JamesYoungman nice tip, +1 Commented Jul 6, 2012 at 15:16

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.