Hey There,
What I’ve done is to use Shane Stanley’s BridgePlus library to get a recursive list of Posix Paths of the front Finder window.
I then have used the Satimage.osax’s regular expressions to add a space before the file name in each path to facilitate searching by name.
Then I’ve done a search and found several items.
Then I’ve removed the space I previous added, so I have viable Posix Paths again.
The regex stuff can be done with ASObjC, but I’m not going to bother.
Conversely the file-listing stuff can be done with the Satimage.osax, which is what I’d do on my own system.
My downloads folder has over 6K items in it, and this script takes less than half a second to run.
Subsequent look-ups after the path-list is built will be very fast.
I suspect that ASObjC will do even faster look-ups if the file-list is maintained as a ASObjC-object, but I don’t know how to do that yet.
In any case this gives you an idea of what can be done.
–
Best Regards,
Chris
{ MacBookPro6,1 · 2.66 GHz Intel Core i7 · 8GB RAM · OSX 10.11.4 }
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
REQUIRES: Satimage.osax, BridgePlus
-------------------------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2016/04/21 17:35
# dMod: 2016/04/21 17:51
# Appl: Finder
# Task: Lookup File Names in a Recursive Path List of the Designated Finder Window
# Osax: Satimage.osax { http://tinyurl.com/dc3soh }
# Libs: BridgePlus { http://tinyurl.com/zuljd35 }
# Tags: @Applescript, @Script, @Finder, @File, @Name, @Lookup
-------------------------------------------------------------------------------------------
use AppleScript version "2.3.1"
use framework "Foundation"
use scripting additions
use script "BridgePlus" version "1.3.1"
set Forder to load framework
-------------------------------------------------------------------------------------------
# Currently targeting the front Finder window.
tell application "Finder" to set theTarget to target of Finder window 1 as alias
# Get all items in folder using Shane Stanley's BridgePlus library.
set allPaths to Forder's itemsIn:theTarget recursive:true skipHidden:true skipInsidePackages:true asPaths:true
set allPaths to (allPaths's componentsJoinedByString:linefeed) as text
# Add a space after the last path separator "/" to facilitate name searching.
set allPaths to cng("^.+/", "\\0 ", allPaths) of me
# Now we're ready to search for files:
set foundItems to fnd("^.+/ chronosync.*", allPaths, true, true) of me
set foundItems to cng("^(.+/) ", "\\1", foundItems) of me
-------------------------------------------------------------------------------------------
--» HANDLERS
-------------------------------------------------------------------------------------------
on cng(_find, _replace, _data)
change _find into _replace in _data with regexp without case sensitive
end cng
-------------------------------------------------------------------------------------------
on fnd(_find, _data, _all, strRslt)
try
find text _find in _data all occurrences _all string result strRslt with regexp without case sensitive
on error
return false
end try
end fnd
-------------------------------------------------------------------------------------------
[format]{
“/Users/me/Downloads/00) Software/ChronoSync 4.6.3 { 2015.09.07 } { x86_64 } { 10.8-10.10 }.dmg”,
“/Users/me/Downloads/00) Software/ChronoSync 4.6.4 { 2015.10.01 } { x86_64 } { 10.8-10.10 }.dmg”,
“/Users/me/Downloads/00) Software/ChronoSync 4.6.5 { 2015.12.15 } { x86_64 } { 10.8-10.11.2 }.dmg”,
“/Users/me/Downloads/2016.03.17 · 11.31.23 { Gathered }/2016.03.19 · 09.29.33 { Consolidated Items Folder }/ChronoSync 4.6.6 { 2016.03.07 } { x86_64 } { 10.8-10.11.3 }.dmg”,
“/Users/me/Downloads/2016.03.25 · 15.54.05 { Gathered }/ChronoSync 4.6.7 { 2016.03.22 } { x86_64 } { 10.8-10.11.4 }.dmg”
}
[/format]