如何删除Mac终端中的每个N:th文件?

时间:2013-02-20 12:17:47

标签: terminal

如果已经回答了我真的很抱歉 - 我找不到它。

我有一个大约的目录。 35000个文件。对于每个文件,有两个副本。它们都按顺序命名,如下:

<00> 0000001,0000002等

在上面的示例中,原始文件将被命名为1,4,7,10等。

如何删除除原件之外的所有文件?

1 个答案:

答案 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进行检查,以确保所有内容都符合预期。

相关问题