Question

I am tryng to do checksum on all .jar files I can find in directory and its sub directories. Then print the filename with the checksum value to a file.

this is what I have.

md5sum | find -name *.jar >result.txt

I am trying to join two commands together that I know work individually.

Any help appreciated.

Was it helpful?

Solution

You could use something like this to execute a command on each file:

find . -name "*.jar" -exec md5sum {} \; >result

OTHER TIPS

This will also work to recursively hash all files in the current directory or sub-directories (thanks to my sysadmin!):

md5sum $(find . -name '*.jar') > result.txt

The above will prepend "./" to the filename (without including the path).

Using the -exec suggestion from mux prepends "*" to the filename (again, without the path).

The listed file order also differed between the two, but I am unqualified to say exactly why, since I'm a complete noob to bash scripting.

Edit: Forget the above regarding the prepend and full path, which was based on my experience running remotely on an HPC. I just ran my sysadmin's suggestion on my local Windows box using cygwin and got the full path, with "*./" prepended. I'll need to use some other fanciness to dump the inconsistent path and prepending, to make the comparison easier. In short, YMMV.

You can also pipe the results to xargs:

find . -name "*.jar" | xargs md5sum > result.txt
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top