我对终端指令很陌生。我知道,如果文件是本地的,我们可以做一些类似wc -l directory/*的事情。但是,如何使用终端在AWS S3上实现相同的功能呢?输出应该是文件名和计数。
例如,S3中的一个目录中有两个文件-“abcd.txt”(文件中的5行)和“efgh.txt”(文件中的10行)。我要每个文件的行数,而不用下载文件,使用终端。输出- 'abcd.txt‘5 'efgh.txt’10
发布于 2022-02-23 22:36:17
如果有用的话,下面是一个使用awscli的快速shell脚本。
#!/bin/bash
FILES=$(aws s3 ls s3://mybucket/csv/ | tr -s ' ' | cut -d ' ' -f4)
for file in $FILES; do
echo $file, $(aws s3 cp s3://mybucket/csv/$file - | wc -l)
done产出实例:
planets.csv, 8
countries.csv, 195
continents.csv, 7请注意,它有效地将单个文件下载到stdout,然后对其进行行计数,因此不会在本地保存任何文件。如果您想让它递归地工作,或者针对包含非文本文件的S3对象集合,那么这将是一些额外的工作。
https://stackoverflow.com/questions/71164078
复制相似问题