# search for a file or folder (path) name that contains the specified search string mdfind 'kMDItemDisplayName == "*apple*"wc' mdfind -0 'kMDItemDisplayName == "*apple*"wc' | xargs -0 basename mdfind -0 'kMDItemDisplayName == "*apple*"wc' | xargs -0 basename | grep Apple mdfind -0 -onlyin ~/Desktop 'kMDItemDisplayName == "*apple*"wc' | xargs -0 basename mdfind '*==*' | grep -i apple mdfind '*==*' | grep -i -E '/[^/]*apple[^/]*$' mdfind '*==*' | grep -i -E '/[^/]*apple[^/]*$' | while read filename; do basename "$filename"; done # the following is an example of bash process substitution # http://wooledge.org:8000/BashFAQ (FAQ 20 & 24) # http://wooledge.org:8000/ProcessSubstitution # read matched file names into an array unset -v ar i dir="$HOME/Desktop" mdfind_search="'*search_string*'wc" mdfind_search="\"*search_string*\"wc" # alternative while read -d $'\0' filename; do ar[i++]="$filename" done < <(mdfind -0 -onlyin ${dir} "kMDItemDisplayName == ${mdfind_search}") echo ${ar[*]}; echo; echo ${ar[0]}; echo ${ar[1]}; echo # let mdfind & kMDItemDisplayName search for the fixed part of the search string, and grep for the variable one # read the matched file names into an array unset -v ar i dir="$HOME/Desktop" mdfind_search="'*search_string*'wc" grep_search="[0-5]" while read -d $'\0' filename; do #if [[ -n $(echo "$filename" | grep -Eos -m1 "$grep_search") ]]; then # match entire path name with grep if [[ -n $(basename "$filename" | grep -Eos -m1 "$grep_search") ]]; then # match last part of path name with grep #ar[i++]="$filename" ar[i++]="$(basename "$filename")" fi done < <(mdfind -0 -onlyin ${dir} "kMDItemDisplayName == ${mdfind_search}") echo ${ar[*]}; echo; echo ${ar[0]}; echo ${ar[1]}; echo # To search only for files add: 'kMDItemKind != "Folder" && ...' unset -v ar i dir="$HOME/Desktop" mdfind_search="'*search_string*'wc" grep_search="[0-5]" item1="'*text*'wc" item2="'*document*'wc" item3="'*source*'wc" while read -d $'\0' filename; do #if [[ -n $(echo "$filename" | grep -Eos -m1 "$grep_search") ]]; then if [[ -n $(basename "$filename" | grep -Eos -m1 "$grep_search") ]]; then #ar[i++]="$filename" ar[i++]="$(basename "$filename")" fi done < <(mdfind -0 -onlyin ${dir} "kMDItemKind != 'Folder' && kMDItemDisplayName == ${mdfind_search}"); #done < <(mdfind -0 -onlyin ${dir} "( kMDItemKind != 'Folder' && ( kMDItemKind == ${item1} || kMDItemKind == ${item2} || kMDItemKind == ${item3}) ) && kMDItemDisplayName == ${mdfind_search}"); echo ${ar[*]}; echo; echo ${ar[0]}; echo ${ar[1]}; echo # To search only for folders add: 'kMDItemKind == "Folder" && ...' unset -v ar i dir="$HOME/Desktop" mdfind_search="'*search_string*'wc" grep_search="[0-5]" while read -d $'\0' filename; do #if [[ -n $(echo "$filename" | grep -Eos -m1 "$grep_search") ]]; then if [[ -n $(basename "$filename" | grep -Eos -m1 "$grep_search") ]]; then #ar[i++]="$filename" ar[i++]="$(basename "$filename")" fi done < <(mdfind -0 -onlyin ${dir} "kMDItemKind == 'Folder' && kMDItemDisplayName == ${mdfind_search}"); echo ${ar[*]}; echo; echo ${ar[0]}; echo ${ar[1]}; echo
Never been to CodeSnippets before?
Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)
Searching with grep & Spotlight's kMDItemDisplayName (See related posts)
You need to create an account or log in to post comments to this site.
Related Posts
» Regex-based file/folder sear... in grep regex shell osx mac mdfind
» grep-based phrase search wit... in grep regex shell osx mac mdfind
» opening in a textmate projec... in grep regex shell osx mac unix textmate
» pcregrep - UTF-8 aware grep ... in grep perl shell osx mac bash unix utf8 UTF-8 pcre pcregrep multiline heirloom project
» Search for open files that w... in shell osx mac server command line
» Remove favicons from Safari'... in shell osx mac safari favicon
Snippets (source code soon to be available) developed by Peter Cooper and powered by Ruby On Rails