I do and get a list of files where I would like to delete many duplicate backup files
find . -type f -name '._*'
I would like to find those files which have a corresponding filename
/home/masi/._test.tex
matches/home/masi/test.tex
/home/masi/math/lorem.png
matches/home/masi/math/._lorem.png
Pseudocode about files wanted to be saved filename
which has corresponding ._filename
but also save filename
without ._filename
find . -type f -name '._*' -exec \
find filenameWithoutDotUnderscore, if yes, print the filename
Pseudocode 2 clarification about files wanted to be removed = ._filename
if there is a corresponding filename
- If there is
filename
and._filename
in the same directory, print._filename
such that I can remove the duplicate =._filename
. - Exclude
filenamePart1_.filenamePart2
,bok_3A.pdf
, ... in._filename
. - Do not remove
._filename
if there is no correspondingfilename
in the same directory.
Reviewing Wildcard's command
I do find . -type f -name '._*' -exec sh -c 'for a; do f="${a%/*}/${a##*/._}"; [ -e "$f" ] && printf "rm -- %s\n" "$a"; done' find-sh {} +
but it returns too many files. I think I need more &&
conditions beside the existence check ([ -e "$f" ]
). It would be great to get here some content comparison and lastly diff if suspicion of much difference.
Systems: Ubuntu 16.04 and Debian 8.25
Bash: 4.3.42
Find: 4.7.0