删除目录中一定数量的具有字符序列的文件

Remove a certain amount of files with a sequence of characters in a directory

我停止了一个进程来排除故障。现在,我想从它在 CentOS 6.4 中停止的地方开始这个过程。

我停止的这个脚本循环运行一个 perl 脚本来处理 /dev/shm/split/ 中的所有文件。这些文件从一个较大的文件中分成许多部分。它们的命名方式示例如下:

file.txt.aa
file.txt.ab
file.txt.ac

...等等。

我发现脚本在 file.txt.fy 处停止。所以,我想删除 /dev/shm/split/ 中从 file.txt.aa 到 file.txt.fy 的所有文件。

我尝试通过以下方式为 rm 命令创建白名单:

ls /dev/shm/split/ > whitelist
cat whitelist | egrep -v 'file.txt.[aa-fz]' | tee whitelist.tmp

这没有达到我的预期。

请帮帮我!谢谢!

你的命令的问题是你不能用 bash 中的方括号模式匹配两个字符。您应该改用类似的东西:

ls file.txt.[a-e]? file.txt.f[a-y]

基本上把你的范围分解成两个范围,第一个会匹配.aa.ez,第二个会匹配.fa.fy(包含)。

请注意,我在这里使用了 ls 命令。当您执行的操作可能具有破坏性时,我总是发现首先回显或 ls 您将要 运行 的 commands/files 是个好主意。当您确定它产生正确的输出时,继续并使用 rm 而不是 ls.