Cor*_*ris 2 command-line shell zsh
我有一个文件名格式为 的文件目录<num1>v<num2>.txt
。我想找到所有<num1>
重复的文件。当发现重复项时,我们应该删除那些较小的<num2>
。
这可能吗?我可以轻松编写一个 python 脚本来处理这个问题,但我认为这可能是内置 zsh 功能的一个很好的应用程序。
例子
在以下文件列表中,前三个文件有重复的<num1>
部分。同样,第四个和第五个是重复的。
012345v1.txt
012345v2.txt
012345v3.txt
3333v4.txt
3333v7.txt
11111v11.txt
Run Code Online (Sandbox Code Playgroud)
我想最终得到包含以下内容的目录
012345v3.txt
3333v7.txt
11111v11.txt
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
files=(<->v<->.txt(n))
typeset -A h
for f ($files) h[${f%%v*}]=$f
keep=($h)
echo rm ${files:|keep}
Run Code Online (Sandbox Code Playgroud)
(echo
如果高兴就删除)
<->
:任何数字序列(<x-y>
没有指定界限的全局运算符)(n)
: 数字排序${f%%v*}
:标准/ksh 贪婪模式从末尾剥离。${files:|keep}
:数组减法。 归档时间: |
|
查看次数: |
482 次 |
最近记录: |