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

Terminal 如何删除Mac终端中的每个N:th文件?,terminal,Terminal,如果这个问题已经得到回答,我真的很抱歉-我找不到它 我有一个目录,大约有35000个文件。每个文件有两份副本。它们都是按顺序命名的,如下所示: 0000001、0000002等 在上面的示例中,原始文件将命名为1、4、7、10等 如何删除除原始文件以外的所有文件?据我所知,Mac终端使用bash作为shell。 以下shell命令将删除所需的文件(除1、4、7、10等之外的所有文件): 我假设文件编号为000number.ext shopt -s extglob; for file in [0-

如果这个问题已经得到回答,我真的很抱歉-我找不到它

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

0000001、0000002等

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


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

据我所知,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
在主脚本之前)

((数字%3!=1))
仅对数字1,4,7,10为真(即余数1除以3)

我建议您先使用
echo
而不是
rm
进行检查,然后再使用rm运行此操作,以确保一切都符合预期