OT: finding every file not in a list
Bill Campbell
freebsd at celestial.com
Wed Jan 27 20:11:51 UTC 2010
On Wed, Jan 27, 2010, Aryeh M. Friedman wrote:
> I have a list of files that should be in a dir tree and want to remove
> any files from the tree not in list (i.e. if it is on the list keep it
> else rm it)... any quick way to do this?
One way to do this that I use quite frequently uses the comm
program to compare lists, something like
cd /path-to-dir1
find . -type f | sort > /tmp/list1
cd /path-to-dir2
find . -type f | sort > /tmp/list2
comm -23 /tmp/list1 /tmp/list2 > /tmp/filesinlist1notinlist2
comm -13 /tmp/list1 /tmp/list2 > /tmp/filesinlist2notinlist1
comm -12 /tmp/list1 /tmp/list2 > /tmp/filescommontolist1andlist2
Then of course one could remove files in list1 not in list2 with:
xargs rm < /tmp/filesinlist1notinlist2
NOTE: The xargs command will not work if the files contain
whitespace.
Bill
--
INTERNET: bill at celestial.com Bill Campbell; Celestial Software LLC
URL: http://www.celestial.com/ PO Box 820; 6641 E. Mercer Way
Voice: (206) 236-1676 Mercer Island, WA 98040-0820
Fax: (206) 232-9186 Skype: jwccsllc (206) 855-5792
Criminals love gun control it makes their jobs safer.
More information about the freebsd-questions
mailing list