not*_*eek 83 bash filenames rename
我有大量的文件,如下所示:
DET01-ABC-5_50-001.dat
...
DET01-ABC-5_50-0025.dat
Run Code Online (Sandbox Code Playgroud)
我希望它们看起来像这样:
DET01-XYZ-5_50-001.dat
...
DET01-XYZ-5_50-0025.dat
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Pau*_*xon 157
有一些重命名命令的变体,在你的情况下,它可能很简单
rename ABC XYZ *.dat
Run Code Online (Sandbox Code Playgroud)
您可能有一个采用Perl正则表达式的版本;
rename 's/ABC/XYZ/' *.dat
Run Code Online (Sandbox Code Playgroud)
小智 105
for file in *.dat ; do mv $file ${file//ABC/XYZ} ; done
Run Code Online (Sandbox Code Playgroud)
没有rename或sed需要.只是bash 参数扩展.
像这样的东西会做到这一点.该for循环可能需要根据其档案名称,你想捕捉进行修改.
for fspec1 in DET01-ABC-5_50-*.dat ; do
fspec2=$(echo ${fspec1} | sed 's/-ABC-/-XYZ-/')
mv ${fspec1} ${fspec2}
done
Run Code Online (Sandbox Code Playgroud)
您应该总是在数据副本上测试这些脚本,顺便说一下,在完全不同的目录中.
小智 5
您需要学习如何使用 sed http://unixhelp.ed.ac.uk/CGI/man-cgi?sed
并且还可以使用 for 来循环浏览文件条目http://www.cyberciti.biz/faq/bash-for-loop/
你的命令看起来像这样,我旁边没有术语,所以我无法检查
for i in `dir` do mv $i `echo $i | sed '/orig/new/g'`
Run Code Online (Sandbox Code Playgroud)