我的一个朋友在 Windows 上以这种方式分组了大量文件
在我让他切换到 Ubuntu 之后,文件不再根据前面的感叹号数量进行排序,所以我想知道如何按照这个规则切换它们:
1
对于!
和!!
0
对于!!!
和!!!!
我想我应该使用 awk,但我不是专家,因此我在这里..
答案1
答案2
在 Python 脚本中:
#!/usr/bin/env python3
import os
import shutil
import sys
dr = sys.argv[1]
replace = ["!", "!!", "!!!", "!!!!"]
for f in os.listdir(dr):
test = [f.startswith(s) for s in replace]
if test.count(True) > 2:
shutil.move(dr+"/"+f, dr+"/"+"0"+f.replace("!", ""))
elif 0 < test.count(True) < 3:
shutil.move(dr+"/"+f, dr+"/"+"1"+f.replace("!", ""))
它将替换 leading!!!!
和!!!
by 0
,以及!!
and 和!
by 1
,假设!
仅出现在名称的开头。
使用它
- 将脚本粘贴到空文件中,另存为
rename.py
通过以下命令从终端窗口运行它:
python3 /path/to/rename.py '<directory>'
<directory>
包含要重命名的文件的目录在哪里。
答案3
您也可以使用基于 perl 的rename
命令,例如
rename -vn -- 's/^!{1,2}(?!!)/0/' *
匹配名称开头 ( )!
处不以 a 结尾的一个或两个字符,并且!
^
s替代0
;和
rename -vn -- 's/^!{3,4}(?!!)/1/' *
匹配名称开头 ( )!
处不跟有 a 的三个或四个字符,并且!
^
s替代1
。
注意:该-n
开关允许您进行“试运行”而无需实际更改名称 - 请先测试表达式,n
如果要继续,请删除。