How can I recursively search for directory names with a particular string where the string is only part of the directory name
How can I recursively search for directory names with a particular string where the string is only part of the directory name?
For example: the directory name is "8.0.3-99966_en", but I want to recursively search for directories with the string "99966".
You can use the find
command:
find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print
Example:
find ~ -type d -name "*99966*" -print
should find all directories (-type d
) starting from your home directory (~
)that have their names containing the string "99966" (-name "*99966*"
) and output them (-print
).
To avoid all of the "Permission denied" results, you can use:
find / -type d -name "*99966*" -print 2>/dev/null
See this article on null device and this one on standard streams for more info.
You can pipe the output to grep
to have it highlight the directory name
Something like
find / -type d | grep "directory name"
The /
indicates to search the whole computer
An easy way to do this is to use find | egrep string
. If there are too many hits, then use the -type d
flag for find. Run the command at the start of the directory tree you want to search, or you will have to supply the directory as an argument to find
as well.
Another way to do this is to use ls -laR | egrep ^d
.
And the locate
command also comes in handy: locate string