如何删除自SATE DATE起的所有文件?

时间:2019-03-21 18:08:42

标签: bash slack slack-api

我想知道自30天以来如何使用Slack API删除所有文件吗?

2 个答案:

答案 0 :(得分:1)

由于我没有找到该问题的Stackoverflow答案,因此我创建了一个单行bash脚本来完成此任务:

curl -X GET -H 'Authorization: Bearer xoxp-yourtoken' \
https://slack.com/api/files.list\?ts_to\=$(date -d "$date -30 days" +"%s") \
| jq -r '.files[] | .id' \
| xargs -I {} -n 1 curl -X POST -H 'Authorization: Bearer xoxp-yourtoken' \
https://slack.com/api/files.delete\?file\={}

此命令将执行的操作:

  1. 它将使用slack api获取自30天以来的所有文件的列表;
  2. 它解析JSON答案并以换行符分隔的列表返回文件的ID。
  3. 然后,每个ID都会调用files.delete。

您将需要:

  1. jq解析json:sudo apt install jq
  2. 一个松弛的授权应用程序,用于获取您的Bearer密钥

您需要创建一个新的slack-api应用,然后像下面一样选择Permissions作为功能部件:

enter image description here

最后,您进入“ OAuth和权限”并复制密钥。

享受!

答案 1 :(得分:1)

(不是答案,而是很大的评论)

我不是巨大的单线粉丝。这样更易于维护:

list_files() {
    local last_month=$(date -d "30 days ago" "+%s")
    local url="https://slack.com/api/files.list?ts_to=$last_month"
    local curl_opts=( 
        -X GET 
        -H "Authorization: Bearer $token" 
    )
    curl "${curl_opts[@]}" "$url"
}

extract_ids() {
    jq -r '.files[] | .id'
}

delete_files() {
    local url="https://slack.com/api/files.delete?file={}"
    local curl_opts=( 
        -X POST 
        -H "Authorization: Bearer $token" 
    )
    xargs -I {} -n 1 curl "${curl_opts[@]}" "$url"
}

token='xoxp-yourtoken'
list_files | extract_ids | delete_files