好的,对于新的高级塞拉利昂,我正在尝试写一个脚本来自动删除占用HDD空间的本地快照。我知道你可以缩小使用薄快照/ 1000000000 4,但我觉得这只是一个创可贴。
所以我想做的是从以下几个方面提取2018-02-#的日期:
sudo tmutil listlocalsnapshots /
com.apple.TimeMachine.2018-02-15-170531
com.apple.TimeMachine.2018-02-15-181655
com.apple.TimeMachine.2018-02-15-223352
com.apple.TimeMachine.2018-02-16-000403
com.apple.TimeMachine.2018-02-16-013400
com.apple.TimeMachine.2018-02-16-033621
com.apple.TimeMachine.2018-02-16-063811
com.apple.TimeMachine.2018-02-16-080812
com.apple.TimeMachine.2018-02-16-090939
com.apple.TimeMachine.2018-02-16-100459
com.apple.TimeMachine.2018-02-16-110325
com.apple.TimeMachine.2018-02-16-122954
com.apple.TimeMachine.2018-02-16-141223
com.apple.TimeMachine.2018-02-16-151309
com.apple.TimeMachine.2018-02-16-161040我试过各种不同的
| awk '{print $ } (insert number after $)随同
| cut -d ' ' -f 10-.如果你知道我在这里错过了什么,我会非常感激的
编辑:这是一个脚本,它将消除那些令人讨厌的本地snapshots.If --任何人都感兴趣,再次感谢:
#! /bin/bash
dates=`tmutil listlocalsnapshots / | awk -F "." 'NR++1{print $4}'`
for dates in $dates
do
tmutil deletelocalsnapshots $dates
done发布于 2018-02-16 22:18:04
你们很亲密:
somecommand | cut -d"." -f4-
# or
somecommand | awk -F"." '{print $4}'您也可以尝试sed,但是cut是为此而设计的。
发布于 2018-02-16 22:25:19
1- awk:可以使用-F选项指定字段分隔符,也可以打印子字符串。
awk -F. '{print $4}'
awk '{print substr($0,23)}'2- cut:等效。
cut -d. -f4
cut -c23- 3-纯bash (血!):和上面一样。
while IFS=. read s1 s2 s3 d; do echo "$d"; done
while read line; do echo "${line:23}"; done实际上,使用少量的记录(就像在用例中那样),速度不是问题,甚至可以使用纯bash或regexp(就像在其他aswers中一样)。随着记录数量的增加,awk和cut的速度越来越快。
发布于 2018-02-16 22:24:59
使用grep和regex:
$ grep -oP '\d{4}-\d{2}-\d{2}-\d{6}$'
2018-02-15-170531
2018-02-15-181655
2018-02-15-223352
2018-02-16-000403
2018-02-16-013400
2018-02-16-033621
2018-02-16-063811
2018-02-16-080812
2018-02-16-090939
2018-02-16-100459
2018-02-16-110325
2018-02-16-122954
2018-02-16-141223
2018-02-16-151309
2018-02-16-161040https://stackoverflow.com/questions/48835585
复制相似问题