Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion lib/ls.go
Original file line number Diff line number Diff line change
Expand Up @@ -360,10 +360,16 @@ Usage:
`,
}

type listOptionType struct {
startTime int64
endTime int64
}

// ListCommand is the command list buckets or objects
type ListCommand struct {
command Command
payerOption oss.Option
listOption listOptionType
filters []filterOptionType
}

Expand Down Expand Up @@ -396,6 +402,8 @@ var listCommand = ListCommand{
OptionMarker,
OptionUploadIDMarker,
OptionEncodingType,
OptionStartTime,
OptionEndTime,
OptionInclude,
OptionExclude,
OptionAllversions,
Expand Down Expand Up @@ -449,6 +457,12 @@ func (lc *ListCommand) RunCommand() error {
}
}

lc.listOption.startTime, _ = GetInt(OptionStartTime, lc.command.options)
lc.listOption.endTime, _ = GetInt(OptionEndTime, lc.command.options)
if lc.listOption.endTime > 0 && lc.listOption.startTime > lc.listOption.endTime {
return fmt.Errorf("start time %d is larger than end time %d", lc.listOption.startTime, lc.listOption.endTime)
}

if cloudURL.bucket == "" {
return lc.listBuckets("")
}
Expand Down Expand Up @@ -675,7 +689,6 @@ func (lc *ListCommand) displayObjectsResult(lor oss.ListObjectsResult, bucket st
if i == 0 && !shortFormat && !directory && len(lor.Objects) > 0 {
fmt.Printf("%-30s%12s%s%12s%s%-36s%s%s\n", "LastModifiedTime", "Size(B)", " ", "StorageClass", " ", "ETAG", " ", "ObjectName")
}

var num int64
if !directory {
num = lc.showObjects(lor, bucket, shortFormat, limitedNum)
Expand Down Expand Up @@ -713,6 +726,11 @@ func (lc *ListCommand) showObjects(lor oss.ListObjectsResult, bucket string, sho
break
}

if (lc.listOption.startTime > 0 && object.LastModified.Unix() < lc.listOption.startTime) ||
(lc.listOption.endTime > 0 && object.LastModified.Unix() > lc.listOption.endTime) {
continue
}

if !doesSingleObjectMatchPatterns(object.Key, lc.filters) {
continue
}
Expand Down
14 changes: 14 additions & 0 deletions lib/rm.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ type removeOptionType struct {
recursive bool
force bool
typeSet int64
startTime int64
endTime int64

//version
versionId string
Expand Down Expand Up @@ -323,6 +325,8 @@ var removeCommand = RemoveCommand{
OptionMultipart,
OptionAllType,
OptionEncodingType,
OptionStartTime,
OptionEndTime,
OptionInclude,
OptionExclude,
OptionVersionId,
Expand Down Expand Up @@ -403,6 +407,12 @@ func (rc *RemoveCommand) RunCommand() error {
return nil
}

rc.rmOption.startTime, _ = GetInt(OptionStartTime, rc.command.options)
rc.rmOption.endTime, _ = GetInt(OptionEndTime, rc.command.options)
if rc.rmOption.endTime > 0 && rc.rmOption.startTime > rc.rmOption.endTime {
return fmt.Errorf("start time %d is larger than end time %d", rc.rmOption.startTime, rc.rmOption.endTime)
}

// start progressbar
go rc.entryStatistic(bucket, cloudURL)

Expand Down Expand Up @@ -808,6 +818,10 @@ func (rc *RemoveCommand) removeSpecialCharacterObjects(bucket *oss.Bucket, cloud
func (rc *RemoveCommand) getObjectsFromListResult(lor oss.ListObjectsResult) []string {
objects := []string{}
for _, object := range lor.Objects {
if (rc.rmOption.startTime > 0 && object.LastModified.Unix() < rc.rmOption.startTime) ||
(rc.rmOption.endTime > 0 && object.LastModified.Unix() > rc.rmOption.endTime) {
continue
}
if doesSingleObjectMatchPatterns(object.Key, rc.filters) {
objects = append(objects, object.Key)
}
Expand Down