删除几个连续的文件名,但忽略第一个文件名的一部分

删除几个连续的文件名,但忽略第一个文件名的一部分

有时,我的脚本会陷入无限循环。当循环创建新文件时,事情会变得混乱。

我目前有这个文件名格式:

Task.4883.store.log

哪里4883有柜台。

我需要删除除前 10 个文件之外的所有文件(即 0-9 中的计数器(含))。目前,在我可以做出反应并停止脚本之前,已经创建了大约 10k 个文件。 SSD 的速度确实很快。

rm如果不接受那么多的论点, 事情就会变得有点困难:-bash: /bin/rm: Argument list too long

哦,我现在用的是 Mac。

答案1

POSIX 可以处理文件名中包含换行符的文件:

find . -name 'Task.??*.store.log' -exec rm -f {} +

答案2

find . -name 'Task.??*.store.log' | xargs rm -f

答案3

zsh

rm Task.<10->.store.log 

为了避免参数列表太长:

autoload zargs # best in ~/.zshrc 
zargs Task.<10->.store.log -- rm

相关内容