Over a million developers have joined DZone.

Compare Two File Lists In Bash

·
// This will compare two lists of files in bash fairly efficiently without using diff or grep etc.


#!/bin/bash

SVN_FILES="::$(svn ls http://svn.domain.com:3690/svn/repo/path/to/files|tr '\n/' ':')"
DIR_FILES=":$(ls /path/to/files/|tr '\n' ':')"

for DIR_FILE in ${DIR_FILES//:/ }
do

    for SVN_FILE in ${SVN_FILES//::/ }
    do

        if [ "${DIR_FILE}" = "${SVN_FILE}" ]
        then
            : echo "YES ${DIR_FILE} ${SVN_FILE}"
            SVN_FILES=${SVN_FILES/:${SVN_FILE}:/}
            DIR_FILES=${DIR_FILES/:${DIR_FILE}:/:}
            continue
        else
            : echo "  no ${DIR_FILE} ${SVN_FILE}"
        fi

    done

done

for DIR_FILE in ${DIR_FILES//:/ }
do
    echo "Left: file [$DIR_FILE]"
done

for SVN_FILE in ${SVN_FILES//::/ }
do
    echo "Left: svn [$SVN_FILE]"
done
Topics:

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}