Walter Alejandro Iglesias <w...@roquesor.com> writes: > On Fri May 10 08:36:50 2024 Walter Alejandro Iglesias wrote >> Then I do something like this (simplified for clartiy): >> >> [...] >> >> dirs=$(echo "$files" | grep '/$') >> >> for i in $dirs ; do >> find $source/$i | sed 's#'$source'##' | sort | uniq > $source_list >> find $target/$i | sed 's#'$target'##' | sort | uniq > $target_list >> diff $source_list $target_list |\ >> awk '/^> / { print "'$target'" $NF }' >> $delete_list >> done >> >> cat $delete_list | sed 's/^/delete /' >> rm -rf $(cat $delete_list | xargs) >> >> rm $source_list $target_list $delete_list >> ------------------------------------------------ >> > > > Today I realized that the loop above is not necesary: > > ----------------------------------------------------------- > dirs=$(echo "$files" | grep '/$') > > cd && find $dirs | sort | uniq > $source_list > cd $target && find $dirs | sort | uniq > $target_list > diff $source_list $target_list |\ > awk '/^> / { print "'$target'/" $NF }' > $delete_list > > cat $delete_list | sed 's/^/delete /' > rm -rf $(cat $delete_list | xargs) > > # Clean > rm $source_list $target_list $delete_list > ----------------------------------------------------------------
Another tool you might want to take a look at is rdist(1). It's limited in some ways, but is a native capability to OpenBSD. It has a long history.