1
debiann 2017-04-17 21:57:15 +08:00 1
ls 获取文件名列表
grep 提取数字 sort 排序 head 获取最大排序结果 以上组合一下 |
2
minami 2017-04-17 21:57:38 +08:00 1
扫描可以用 find 命令 ,用正则匹配。
获得最大 num 可以把文件名用 sort 排序,然后把 num 从文件名里截出来。 |
3
geelaw 2017-04-17 22:07:38 +08:00 1
很可惜 sort 排序是错误的,因为 xxx10 是优先于 xxx2 的,但如果先取出文件名最长的那些再 sort 就是对的了。
优美的解决方法是使用面向对象的脚本环境。 第一步,下载 PowerShell for Linux ,第二步,把 PowerShell 的工作目录设置为包含很多图片的文件夹,然后运行 $maxnum = gci xxx*.png | % { $_.Name.Substring('xxx'.Length) } | % { $_.Substring(0, $_.Length - '.png'.Length) } | % { [int]::Parse($_) } | measure -Maximum | select -Expand Maximum; mi '桌面上的文件路径' "./xxx$($maxnum + 1).png"; 上述命令的完整形式是 $maxnum = Get-ChildItem 'xxx*.png' | ` ForEach-Object { $_.Name.Substring('xxx'.Length) } | ` ForEach-Object { $_.Substring(0, $_.Length - '.png'.Length) } | ` ForEach-Object { [int]::Parse($_) } | ` Measure-Object -Maximum | ` Select-Object -Expand Maximum; Move-Item -Path '桌面上的文件路径' -Destination "./xxx$($maxnum + 1).png"; |
6
geelaw 2017-04-17 22:12:47 +08:00 1
当然还有一种玩法,如果你知道 xxxnum 系列总是 xxx1 到 xxxnum 的话,你不妨直接统计 xxxnum.png 形式的文件 <strong>个数</strong>。
PS 版本: $x = gci xxx*.png; $x = $x | ? { [regex]::ismatch('xxx\d+\.png', $_.Name, 'IgnoreCase') }; $x = $x.length + 1; mi '桌面上的文件' './xxx$x.png'; |
9
ik 2017-04-17 22:49:00 +08:00 via iPhone 1
find dir/ -name *.png | sort
不知道 文件名前面 xxx 是统一还是随机。 是否对排序有影响,要是有影响…那就先切割,再排序 head/tail 再加一 |