0

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

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

0000001、0000002 等

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

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

4

1 回答 1

0

据我了解,Mac 终端使用 bash 作为外壳。以下 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)}从数字中删除前导零(否则数字将被外壳视为八进制)。这需要设置 extglob 选项(因为shopt -s extglob在主脚本之前)。

((number%3 != 1))仅对数字 1、4、7、10 为真(除以 3 时余数为 1)。

我建议您先检查 usingecho而不是rm在使用 rm 运行它之前检查以确保一切都按预期进行。

于 2013-02-20T12:47:14.240 回答