список уникальных имен файлов в определенной папке - PullRequest
0 голосов
/ 25 октября 2018

Мне нужно перечислить все уникальные имена файлов в определенной папке в AppleScript.

Единственная проблема заключается в том, что все имена файлов будут в этом формате - L58478_A_2803

Мне нужнобыть в состоянии игнорировать все после первого подчеркивания.

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Предположим, что файлы в папке: .. {"L58666_B_2803.txt", "L58666_B_2804.txt", "L58666_B_2805.txt", "L58666_B_2806.txt", "L58667_B_2807.txt", "L58668tt", "L58668_B"

Этот следующий скрипт

tell application "Finder"
    activate
    set fileNames to name of files of (choose folder)
end tell

set partialNames to {}

repeat with i from 1 to count of fileNames
    set thisItem to item i of fileNames
    set theOffset to offset of "_" in thisItem
    set newName to text 1 thru (theOffset - 1) of thisItem
    if partialNames does not contain newName then
        set end of partialNames to newName
    end if
end repeat

Вернет ... {"L58666", "L58667", "L58668"} Если вы не хотите включать первый "_"

Однако, если вы хотите включить первое "_"

, измените

set newName to text 1 thru (theOffset - 1) of thisItem

на

set newName to text 1 thru theOffset of thisItem
0 голосов
/ 26 октября 2018

Вы должны будете сказать мне, это то, что вы хотели или нет.С учетом следующих файлов в папке "~/Example":

L58478_B_2803.txt
L58666_B_2803.txt
L58478_A_2804.txt
L58666_B_2804.txt
L58478_A_2803.txt
L58666_A_2803.txt

сценарий идентифицирует ведущую часть имени файла и выбирает уникальные идентификаторы для этих групп файлов.В этом случае результат будет {"L58478", "L58666"}.

use application "System Events"
property text item delimiters : "_"

script filenames
    property list : name of files in folder "~/Example" whose visible = true
end script

tell (a reference to the list of filenames)
    repeat with f in it
        set f's contents to text item 1 of f
    end repeat

    repeat with i from 1 to (its length) - 1
        set [x, x_] to its [item i, items (i + 1) thru -1]
        if x is in x_ then set its item i to null
    end repeat

    strings
end tell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...