使用R删除S3中的文件夹

使用R删除S3中的文件夹,r,amazon-web-services,amazon-s3,R,Amazon Web Services,Amazon S3,我想删除一个文件夹中的所有文件 我试过了 library(aws.s3) delete_object(object = "folder_to_delete", bucket = "bucket_name/folder/sub_folder/") delete_object(object = "bucket_name/folder/sub_folder/folder_to_delete") R返回 [1] TRUE 但最后,没有删除任何内容。 如果没有人知道如何做到这一点,也许有人知道如何列出

我想删除一个文件夹中的所有文件

我试过了

library(aws.s3)
delete_object(object = "folder_to_delete", bucket = "bucket_name/folder/sub_folder/")
delete_object(object = "bucket_name/folder/sub_folder/folder_to_delete")
R返回

[1] TRUE
但最后,没有删除任何内容。 如果没有人知道如何做到这一点,也许有人知道如何列出存储在特定文件夹中的所有文件名(
aws.s3
library提供了列出所有存储桶名称的唯一功能,而不是文件名)

更确切地说,我不知道文件夹中要删除的文件的具体名称

它们只有共同的开头部分——“报告”。它的意思是在文件夹内“要删除的文件夹” 我们有如下文件:

report_1234
report_87688
report_uyrtt

这对我来说很有用,还有一个额外的好处,就是tidyverse的所有功能都可以选择您需要的文件。。。或者不要

library(aws.s3)
library(tidyverse)

# Bucket contents in dataframe
bucket <- 
  get_bucket_df("bucket_name", 
                prefix = "folder/subfolder/folder_with_contents_to_delete/")

# List of files to delete
files_to_delete <-
  bucket %>% 
# Filter based on deletion criteria
  # Keeping files modified after 01 April 2020
  filter(LastModified >= "2020-04-01") %>% 
  # Keep file names
  select(Key) %>% 
  pull() 

# Loop through file list
for(file in files_to_delete){
  delete_object(file, 
                "bucket_name", 
                prefix = "folder/subfolder/folder_with_contents_to_delete/")
}

这对我来说很有用,还有一个额外的好处,就是tidyverse的所有功能都可以选择您需要的文件。。。或者不要

library(aws.s3)
library(tidyverse)

# Bucket contents in dataframe
bucket <- 
  get_bucket_df("bucket_name", 
                prefix = "folder/subfolder/folder_with_contents_to_delete/")

# List of files to delete
files_to_delete <-
  bucket %>% 
# Filter based on deletion criteria
  # Keeping files modified after 01 April 2020
  filter(LastModified >= "2020-04-01") %>% 
  # Keep file names
  select(Key) %>% 
  pull() 

# Loop through file list
for(file in files_to_delete){
  delete_object(file, 
                "bucket_name", 
                prefix = "folder/subfolder/folder_with_contents_to_delete/")
}

你有没有试过
取消链接
?但是
取消链接
只在个人环境中有效,对吗?我想你是对的。我从未在本地以外的地方尝试过。我不熟悉aws.s3,所以这可能对您不起作用。您是否尝试列出文件夹中的文件,然后将其传递给
delete\u object()
?例如
列出\u文件好的,我在函数
中找到了参数“prefix”,所有\u文件都尝试了
取消链接
?但是
取消链接
只在个人环境中有效,对吗?我想你是对的。我从未在本地以外的地方尝试过。我不熟悉aws.s3,所以这可能对您不起作用。您是否尝试列出文件夹中的文件,然后将其传递给
delete\u object()
?例如,
list\u文件好的,我在函数
all\u文件中找到了参数“prefix”