Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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.

share|improve this question
    
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. –  ephsmith Jul 6 '12 at 14:12

2 Answers 2

up vote 4 down vote accepted

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
share|improve this answer

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.

share|improve this answer
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). –  James Youngman Jul 6 '12 at 14:49
1  
Can also use --passphrase or --passphrase-file instead. –  ryran Jul 6 '12 at 14:54
    
@JamesYoungman nice tip, +1 –  Tim Jul 6 '12 at 15:16

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.