On Sun May 12 11:40:05 2024 tux2bsd wrote > Hi Walter > > mktemp makes temporary unique filenames like this: > > delete_list=$(mktemp) > source_list=$(mktemp) > target_list=$(mktemp) > # Do your code. If you want to keep something you do > # that appropriately then: > rm $delete_list $source_list $target_list > >
This version can deal with files with special characters and spaces: # Remove files from target directory delete_list=$(mktemp -t delete.XXXXXXXXXX) || exit 1 source_list=$(mktemp -t source.XXXXXXXXXX) || exit 1 target_list=$(mktemp -t target.XXXXXXXXXX) || exit 1 dirs=$(echo "$files" | grep '/$') cd && find $dirs | sort | uniq > $source_list cd "$target" && find $dirs | sort | uniq > $target_list diff $source_list $target_list | grep '^> ' | sed 's#^> #'$target'/#' > $delete_list cd && while read line; do echo "delete $line" rm "$line" done < $delete_list # Clean rm $source_list $target_list $delete_list