我对沙格斯有一些过客经验,但我不太知道如何做到这一点:
我有一个使用tarsnap --list-archives从tarsnap检索的存档列表
我想删除某一天的所有档案(每天有24份)
我可以使用xargs来实现这一点:

tarsnap --list-archives | grep 2014-06-09 | xargs -n 1 tarsnap -df

但是,这会一次一个参数地反复运行tarsnap(这是预期的):
tarsnap -df 2014-06-09-00
tarsnap -df 2014-06-09-01
tarsnap -df 2014-06-09-02
... etc ...

tarsnap文档说明,可以通过传递多个-f标志来删除多个存档:
tarsnap -d -f 2014-06-09-00 -f 2014-06-09-01 -f 2014-06-09-02 # ... and so on

有没有办法用xargs来实现这一点?
(旁白:这样做可能是没有意义的,因为我感觉用多个-f标志运行tarsnap只会导致tarsnap多次运行自己,一次运行一个参数。。。但我可能错了)

最佳答案

使用类似于@choroba的想法,您可以完全去掉grep,而使用sed

tarsnap --list-archives | sed -n '/2014-06-09/s/^/-f /p' | xargs tarsnap -d

10-08 19:35