我需要重命名这样的文件名
transform.php?dappName=Test&transformer=YAML&v_id=XXXXX
就是这样
XXXXX.txt
我该怎么做?
我知道我需要多个mv
命令,因为它们至少有25000个文件.
最简单的解决方案是使用"mmv"
你可以写:
mmv "long_name*.txt" "short_#1.txt"
其中"#1"被第一个通配符匹配的任何内容替换.类似地,#2被第二个等替换.
所以你做的事情就像
mmv "index*_type*.txt" "t#2_i#1.txt"
要将index1_type9.txt重命名为t9_i1.txt
mmv在许多Linux发行版中都不是标准版,但很容易在网上找到.
如果您使用zsh,您也可以这样做:
autoload zmv zmv 'transform.php?dappName=Test&transformer=YAML&v_id=(*)' '$1.txt'
你编写了一个相当简单的shell脚本,其中最棘手的部分是重命名.
脚本的大纲很简单(bash语法在这里):
for i in 'transform.php?dappName=Test&transformer=YAML&v_id='* do mv $idone
修改名称有很多选项.我认为最简单的可能就是像单行的一样
`echo $i | awk -F'=' '{print $4}'`
所以...
for i in 'transform.php?dappName=Test&transformer=YAML&v_id='* do mv $i `echo $i | awk -F'=' '{print $4}'`.txt done
好的,正如下面所指出的,这不一定适用于足够大的文件列表;*将超出命令行长度限制.那么,你使用:
$ find . -name 'transform.php?dappName=Test&transformer=YAML&v_id=*' -prune -print | while read do mv $reply `echo $reply | awk -F'=' '{print $4}'`.txt done
尝试重命名命令
或者你可以将ls的结果输入到perl正则表达式中.