如果已经回答了我真的很抱歉 - 我找不到它。
我有一个大约的目录。 35000个文件。对于每个文件,有两个副本。它们都按顺序命名,如下:
<00> 0000001,0000002等在上面的示例中,原始文件将被命名为1,4,7,10等。
如何删除除原件之外的所有文件?
答案 0 :(得分:0)
据我所知Mac终端使用bash作为shell。 以下shell命令将删除您想要的文件(除了1,4,7,10之外的所有内容): 我假设文件编号为000number.ext
shopt -s extglob; for file in [0-9]*; do number=${file%%.ext}; number=${number##+(0)}; if ((number%3 != 1)); then rm $file; fi; done
一些评论:${file%%.ext}
使用特殊的bash语法从文件中删除扩展名以从字符串中删除后缀。如果您的文件没有扩展名,则应删除此命令。
${number##+(0)}
从数字中删除前导零(否则该数字将被shell视为八进制)。这需要设置extglob选项(因为在主脚本之前shopt -s extglob
)。
((number%3 != 1))
仅适用于数字1,4,7,10,(当除以3时,余数为1)。
我建议您先使用echo
而不是rm
进行检查,然后再使用rm进行检查,以确保所有内容都符合预期。