如何通过linux命令行用自定义名称替换以下文件名(Windows支持的格式)。下面只是一个示例案例。我的测试目录中有100多个文件,因此我需要一种自动化的方法,而不是为每个文件手动输入“ mv”命令。
C:\Users\admin\Desktop\PCAP_Storage\TROJAN_MISC_ZEUS-DERIVATIVE
to
TROJAN_MISC_ZEUS-DERIVATIVE
我尝试了一种方法,导致错误
test@localhost:~$ rename 's/C:\Users\admin\Desktop\PCAP_Storage\//g' C:\Users\admin\Desktop\PCAP_Storage\TROJAN_MISC_ZEUS-DERIVATIVE
Substitution pattern not terminated at (user-supplied code).
也尝试忽略特殊字符。
test@localhost:~$ rename 's/C:\\Users\\admin\\Desktop\\PCAP_Storage\\/' C:\Users\admin\Desktop\PCAP_Storage\TROJAN_MISC_ZEUS-DERIVATIVE
Substitution replacement not terminated at (user-supplied code).
答案 0 :(得分:1)
如果您只想删除上一个反斜杠之前的所有内容,则可以使用
s/PATTERN/REPLACEMENT/FLAGS
您尝试的问题是替换命令具有3个参数:
s/C:\Users\admin\Desktop\PCAP_Storage\//g
任何PATTERN,REPLACEMENT或FLAGS都可以为空,但是所有斜杠(或使用的任何定界符)都是必需的。
在
\
最后一个/
对后面的\U
进行转义(并且\a
将以下字符串变为大写,\D
是“哔”声警报,而\P
和C:SERS\x07DMINDESKTOPPCAP_STORAGE/
并不代表任何意思),因此您的模式为
g
和
的替换部分/
并且缺少最后一个s/C:\\Users\\admin\\Desktop\\PCAP_Storage\\/
,从而导致语法错误。
您的第二次尝试,
/
解决了这些问题。现在,所有反斜杠均已正确转义,但最后一个/
仍然丢失。因此,该消息抱怨替换零件缺少{{1}}终止符。