我有3个文本文件。我想使用for循环修改这些文件的文件名,如下所示。
请找到我有的文件
1234.xml
333.xml
cccc.xml
输出:
1234_R.xml
333_R.xml
cccc_R.xml
答案 0 :(得分:1)
基本的unix命令mv
同时适用于移动和重命名
mv 1234.xml 1234_R.xml
如果你想大量购买,请这样做:
[~/bash/rename]$ touch 1234.xml 333.xml cccc.xml
[~/bash/rename]$ ls
1234.xml 333.xml cccc.xml
[~/bash/rename]$ L=`ls *.xml`
[~/bash/rename]$ for x in $L; do mv $x ${x%%.*}_R.xml; done
[~/bash/rename]$ ls
1234_R.xml 333_R.xml cccc_R.xml
[~/bash/rename]$
答案 1 :(得分:1)
根据您的发行版,您可以使用rename
:
rename 's/(.*)(\.xml)/$1_R$2/' *.xml
答案 2 :(得分:0)
您可以使用 for 循环使用(bash)语法迭代单词列表(例如,使用ls
返回的文件名列表):
for name [ [ in [ word ... ] ] ; ] do list ; done
然后使用mv source dest
重命名每个文件。
这里的一个好方法是使用basename
,它从文件名中删除目录和后缀(例如basename 333.xml
将只返回333
)。
如果将所有这些放在一起,以下内容应该有效:
for f in `ls *.xml`; do mv $f `basename $f`_R.xml; done