-2

I am trying to diff two folders using diff and launch vimdiff for each difference from a shell script

This is how I extracted filenames and made complete command using awk which I like to execute

 $ diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}'
 vimdiff oldfolder/a.c newfolder/a.c 
 vimdiff oldfolder/b.c newfolder/b.c 

Now I tried

diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}' | bash 

it didn't work, gives warning that Vim: Warning: Input is not from a terminal

also tried bash -c like below

diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}' | bash -c 

but this gives error bash: -c: option requires an argument

I also tried

$(diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}')

it doesn't output at all.

This is quite useful for any developer so I am hoping to find some answer

Jim
  • 338
  • 1
  • 14

1 Answers1

1

Just out of curiosity, tried it.

How about like this:

vimdiff $(diff -Bbqr oldfolder newfolder | grep differ | awk '{print $2,$4}')

However this worked for me:

$(echo vimdiff file1 file2)

You can also try this:

</dev/tty $(diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}')

Oh, right, and this:

bash <(diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}')

You question might as well put like this way:


How to make this work?:

echo vimdiff oldfolder/a.c newfolder/a.c|bash 
echo vimdiff oldfolder/a.c newfolder/a.c|bash -c

Til
  • 5,150
  • 13
  • 26
  • 34