通过子字符串查找并打开文件夹

时间:2019-09-12 05:10:40

标签: shell terminal applescript

我有以下要求,但不知道如何解决:

  • 给出的字符串如“ PA01021234”(带有显示对话框和用户输入)
  • 在已安装的网络卷上,有一个名为“ PA01021234_xyz”的文件夹
  • 我希望我的Applescript通过子字符串找到该文件夹​​并打开它

我想我需要一个卷上所有文件夹的数组,以及一个将文件夹名称与子字符串进行比较的循环。但是我不知道如何实现这一目标,因为我对Applescript不太了解。

我不知道纯Applescript是否可行,或者我是否需要一些shell脚本。

任何帮助表示赞赏!


编辑:

其他要求如下:

  1. 要查找的文件夹将始终位于已安装的网络卷的第一级。
  2. 子字符串(例如PA01021234)将始终位于文件夹名称的开头。
  3. 永远只有一个可能的比赛。

2 个答案:

答案 0 :(得分:2)

在applescript中,您可以使用系统事件来获取此信息,如下所示:

set folderPath to findFolder("PA01021234", "Volume Name")

on findFolder(folderPrefix, diskName)
    tell application "System Events"
        set folderList to POSIX path of folders of disk diskName whose name begins with folderPrefix
    end tell

    if folderList is {} then
        return missing value
    else
        set theFolder to first item of folderList
        tell application "System Events"
            open folder theFolder
        end tell
        return theFolder
    end if
end findFolder

这将打开有问题的文件夹并返回并返回其POSIX路径,或者如果找不到则返回“缺少值”。

答案 1 :(得分:1)

尝试以下Shell脚本:

#!/bin/bash
[ "$#" -lt 1 ] && exit 1

for mnt_pnt in $(df -t nfs | grep -v 'Filesystem' | awk '{print $NF}')
do
        find ${mnt_pnt} -name "$1" -type d -print | xargs nautilus
done

您必须像bash <above_script.sh> <input>一样以bash find_mntdir.sh PA01021234的身份执行。