Macos 想知道当它';她叫什么名字?

Macos 想知道当它';她叫什么名字?,macos,shell,Macos,Shell,我在目录中有一个文件 file3.proto file2.proto file1.proto 我想删除文件1和文件2,最大的数字是我不想删除的最新文件。如何在shell脚本中实现这一点 下面这件事很管用,但我想变得更有活力。我不想每次当数字增加时都更改shell脚本,例如,如果文件是4,那么我需要更改1..3 ls | grep '.proto' | rm file{1..2}.proto 这些文件是什么 file1.proto file2.proto file3.proto 执行命令 r

我在目录中有一个文件

file3.proto
file2.proto
file1.proto
我想删除文件1和文件2,最大的数字是我不想删除的最新文件。如何在shell脚本中实现这一点

下面这件事很管用,但我想变得更有活力。我不想每次当数字增加时都更改shell脚本,例如,如果文件是4,那么我需要更改1..3

ls | grep '.proto' | rm file{1..2}.proto
这些文件是什么

file1.proto
file2.proto
file3.proto
执行命令

rm file1.proto file2.proto
更新:请注意,
ls
命令以字母顺序输出文件,而不是数字顺序。。。我的意思是,如果您还有一个
file25.proto
,您将从
ls
获得以下输出:

file1.proto
file25.proto
file2.proto
file3.proto

因此,根据文件夹中可能存在的最大文件数,最好(如果可能)重命名文件,如
file001.proto
。这是文件名排序的常见问题…

一个
rm文件*.proto
就足够了吗?还是那太“格洛比”?:)不,我想要最高数量的文件。您的命令将删除所有文件。我不想这样。你有没有考虑过一个
ls
,带有“人”选项,可以按照你的意愿进行排序,通过管道连接到
tail-1
,以获得最大的数字,然后是一个
mv
?这将允许您使用上面的
rm
,最后一步是重命名幸存的文件。编号最高的文件是否会排序在编号较低的文件之前?例如,是否会有
file9.proto
file10.proto
,其中
file10
file9
之前排序,或者数字会被零填充?这不是问题的相反,删除而不是保留该文件吗?这不起作用:
我得到头:非法行计数---1
哦,我现在看到了,
-1
。为什么
ls
会按相反的字母顺序显示文件?还有一些其他问题
grep.proto'
匹配
.proto
xproto
yproto
。。。而且您根本不需要grep:
ls*.proto
–但首先。@danglingpointer:该命令删除扩展名为.proto的所有文件,但删除最后一个文件(按ls使用的顺序,即字母顺序)。
file1.proto
file25.proto
file2.proto
file3.proto