Piece together solutions available in Stack Exchange.
If you do enough research you will find a solution by combining these five answers:
Trial Run
First run the command without rm (remove) option to ensure correct files are being found:
$ find /usr/local/bin/ /bin/ -printf '%P\n' | sort | uniq -d | tail -n +2 | awk '{print "/bin/" $0}'
/bin/.auto-brightness-config
/bin/auto-brightness-config
/bin/bell
/bin/bell/bell-select-menu
( ... OUTPUT SHORTENED ... )
How it works
find returns the filenames in Directory 1 (/usr/local/bin) followed by Directory 2 (/bin(:
Directory 1 Files in no particular order
Directory 2 Files in no particular order
- echo
- aaaaa
- zcat
- bbbbb
- egrep
- yyyyy
sort sorts the two directories' filenames alphabetically
- aaaaa
- aaaaa
- bbbbb
- bbbbb
- echo
- egrep
- yyyyy
- yyyyy
- zcat
uniq -d reports only the duplicates
This gives us a list of Directory 1 filenames that were accidentally copied into Directory 2. But there is a blank line at the top of the list.
tail -n +2 removed the blank line at the top of the list.
awk '{print "/bin/" $0}' prepends /bin/ to each filename so we have:
- /bin/aaaaa
- /bin/bbbbb
- /bin/yyyyy
Append the rm command to pipeline
Now that we've confirmed output is correct append the rm command via xargs. Note if you have filenames with special characters read the fourth link above for exceptional handling.
$ find /usr/local/bin/ /bin/ -printf '%P\n' | sort | uniq -d | tail -n +2 | awk '{print "/bin/" $0}' | xargs rm -f
rm: cannot remove '/bin/.auto-brightness-config': Permission denied
rm: cannot remove '/bin/auto-brightness-config': Permission denied
rm: cannot remove '/bin/bell': Is a directory
rm: cannot remove '/bin/bell/bell-select-menu': Permission denied
The Permission denied error appears because we must use sudo powers to run the command. Note the error '/bin/bell' is a directory. Later we will have to manually removed the directory with rm -d command.
sudo powers required for /bin directory.
The reason permission denied errors occurred is because root owns the files in /bin we want to delete and our regular user ID isn't allowed to delete them.
Note depending on how you copied the files into the target directory you may not need need sudo powers to delete them. For example if you are defined as the owner of the files in the target directory.
Now lets run command with sudo powers:
$ find /usr/local/bin/ /bin/ -printf '%P\n' | sort | uniq -d | tail -n +2 | awk '{print "/bin/" $0}' | sudo xargs rm -f
rm: cannot remove '/bin/bell': Is a directory
rm: cannot remove '/bin/bell/sounds': Is a directory
rm: cannot remove '/bin/startup-scripts': Is a directory
rm: cannot remove '/bin/zap': Is a directory
rm: cannot remove '/bin/zap/Assembly-Intro-hello': Is a directory
rm: cannot remove '/bin/zap/Assembly-Intro-hello/BeOS': Is a directory
rm: cannot remove '/bin/zap/Assembly-Intro-hello/FreeBSD': Is a directory
rm: cannot remove '/bin/zap/Assembly-Intro-hello/Linux': Is a directory
75 files have been deleted but 8 empty sub-directories are left to remove. We use the -r recursive option with rm command to delete them:
$ find /usr/local/bin/ /bin/ -printf '%P\n' | sort | uniq -d | tail -n +2 | awk '{print "/bin/" $0}' | sudo xargs rm -rf
Nothing is reported so no more errors!
Summary
The objective of this answer is to not only solve the problem at hand but show the reader how a problem can be solved by checking multiple existing answers in Stack Exchange.
cp /usr/local/bin /binshouldn't copy any files. It should print the error messagecp: -r not specified; omitting directory '/usr/local/bin'. Are you sure that's the command you ran? – Eliah Kagan Jul 01 '20 at 21:03-rflag. – WinEunuuchs2Unix Jul 01 '20 at 21:56cp -r /usr/local/bin /binplaces all copied files in/bin/bin, which is very easy to fix. Are you sure that's the command you ran? One of my concerns is that people who have run the command(s) mentioned in this question (or variations on them) may find this question by searching, wrongly assume they have a complicated problem, and attempt to follow advice in answers here that is inappropriate for their use case and that, especially if followed wrongly, would turn a problem that is easy to fix (or a total non-problem) into a problem that is hard or impossible to fix. – Eliah Kagan Jul 01 '20 at 21:59cpcommand altogether. – WinEunuuchs2Unix Jul 01 '20 at 22:09/usr/local/binand what they were from (since that directory is empty by default), and an example of a command that would produce the same effect as what happened even if is not the same command (this wouldn't be either of the commands suggested so far, though--perhaps it would involve a glob). But I really don't think such information is actually needed to support the current answers or facilitate further answers. – Eliah Kagan Jul 02 '20 at 23:15/home/$USER/Documentswas copied into/home/admin/Documents. So the fact it was/binis a relatively mute point although it did open the doors for an answer based upondpkg -S. Thanks for your input I won't worry about the close vote anymore. – WinEunuuchs2Unix Jul 02 '20 at 23:35