Applescript - Creating folders based on the first word of the filename

放肆的年华 提交于 2020-01-03 05:04:19

问题


Essentially i'm looking for an applescript that allow me to order the massive 50.000 files by creating folders that have just the first word of the files, ignoring the rest of the filename after the first space.

For eaxmple the 50.000 files are named like this:
 - amazingfrog -shootingbase.jpg 
 - frog 2sHDn1_9fFs12s.jpg
 - frog 29adjjdd39939.mov 
 - Horse IUS39aosdja.mov
 - horse 282131888.jpg 
 - HORSE.jpg
 And so on.....

- I would like to be like this:
    - amazingfrog
       -amazingfrog -shootingbase.jpg
    - frog    
       -frog 2sHDn1_9fFs12s.jpg 
       -frog 29adjjdd39939.mov
    - horse
       -horse IUS39aosdja.mov
       -horse 282131888.jpg 
       -horse.gif
And so on....

On the internet i came across with the following script:

set chosenFolder to (choose folder)
tell application "Finder" to set fileList to files of chosenFolder

repeat with aFile in fileList
    set {name:Nm, name extension:Ex} to info for (aFile as alias)
    if Ex is missing value then set Ex to ""
    if Ex is not "" then set Nm to text 1 thru ((count Nm) - (count Ex) - 1) of Nm
    set dateFolder to text 1 thru 15 of Nm
    set sourceFile to quoted form of POSIX path of (aFile as text)
    set destinationFile to quoted form of (POSIX path of chosenFolder & dateFolder & "/" & name of aFile)
    do shell script "ditto " & sourceFile & space & destinationFile
    do shell script "rm " & sourceFile
end repeat

The only problem is that i have to choose in the "text 1 thru" the numbers of the letters i want to keep. And unfortunately the first word of the filenames have different length...

Could be possible to modify this script to my needed? or do you have any other suggestions?

Thanks in advance for any reply!!


回答1:


I recommend to use text item delimiters to extract the first part of the file name

set chosenFolder to (choose folder)
tell application "Finder" to set fileList to files of chosenFolder

set TID to text item delimiters
set text item delimiters to space
repeat with aFile in fileList
    set fileName to name of aFile
    set textItems to text items of fileName
    if (count textItems) = 1 then
        set fileExtension to name extension of aFile
        set folderName to text 1 thru ((get offset of "." & fileExtension in fileName) - 1) of fileName
    else 
        set folderName to first item of textItems
    end if
    set sourceFile to quoted form of POSIX path of (aFile as text)
    set destinationFile to quoted form of (POSIX path of chosenFolder & folderName & "/" & fileName)
    do shell script "ditto " & sourceFile & space & destinationFile
    do shell script "rm " & sourceFile
end repeat
set text item delimiters to TID


来源:https://stackoverflow.com/questions/51093864/applescript-creating-folders-based-on-the-first-word-of-the-filename

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!