自 2008 年以来,我有多个屏幕截图,名称如“screenshot-2010-13-12.jpg”。我需要复制 2010 年至 2019 年以来的屏幕截图。我尝试了 -name 和 -regex 的不同选项,但找不到方法。正则表达式的唯一成功之处在于按格式查找,仅此而已。
答案1
如果您想严格遵守格式,可以使用以下命令:
find . -name "screenshot-201[0-9]-??-??.jpg" -type f
这将搜索名称以 开头screenshot-201
,然后有一个数字,然后是破折号、两个字符、破折号、两个字符和.jpg
答案2
要推广到任意范围的日期,zsh
您可以执行以下操作:
cp screenshot-????-??-??.jpg(.e['
[[ $REPLY >= screenshot-2010-02-12.jpg &&
$REPLY <= screenshot-2019-09-21.jpg ]]']) /some/dir/
或者:
cp screenshot-????-??-??.jpg(.e['
[[ ${REPLY//[^0-9]} = <20100212-20190921> ]]']) /some/dir/
.
例如,复制 2010-02-12 到 2019-09-21 范围内的常规(带有)文件。
如果它们不在当前工作目录中,但您需要在任意级别的子目录中搜索它们:
cp -i -- **/screenshot-????-??-??.jpg(.e['
[[ $REPLY:t >= screenshot-2010-02-12.jpg &&
$REPLY:t <= screenshot-2019-09-21.jpg ]]']) /some/dir/
(此处添加是-i
为了降低目录中发现多个同名文件的风险)。