Finding All Directories with the Same Name

Time for a confession. I collect a lot of software. I have one disk filled with public-domain software. Some directories are "collections" like the Sun User Group tapes. It is likely that I might have the same program in two different directories. To prevent this waste of space, I create an index of directories and the path needed to reach them. If I have two directories with the same name, I would like to know about it. I might be able to delete one of the directories. A simple way to search for redundant directories is with the following command:

find . -type d -print | \ awk -F/ '{printf("%s\t%s\n",$NF,$0);}' | \ sort

[You might want to make this into an alias or function . () --JP ] The find () command prints out all directories. The awk () command uses the slash (/) as the field separator. NF is the number of fields, and $NF the last field. $0 is the awk variable for the entire line. The output would tell you where all of the directories named misc are located:

misc ./X11/lib/X11/fonts/misc misc ./misc misc ./src/XView2/contrib/examples/misc misc ./src/XView2/fonts/bdf/misc misc ./src/XView2/lib/libxvin/misc misc ./src/XView2/lib/libxvol/misc misc ./src/XView2/misc

This could be converted into a shell script that takes arguments. If no arguments are specified, I want it to default to the argument (dot):

 ${*-.} 
#!/bin/sh # usage: dir_path [directory ...] # list directory and path to directory find ${*-.} -type d -print | awk -F/ ' {
 printf ("%s\t%s\n",$NF,$0);
}
' | sort

[You could also use this great idea for finding duplicate files. Change the -type d to -type f. If you (or all the users on your system) want to use this a lot, run dir_path nightly with cron () or at (). Save the output to a "database" file. Use the speedy look command (27.18) to search the database file. Article shows another find database. -JIK, JP ]

- BB