2014-12-17 3 views

ответ

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]$ 
+0

@magesh Я только что отредактировали базу по вашему требованию. – BigTailWolf

1

В зависимости по вашему расписанию, вы можете использовать rename:

rename 's/(.*)(\.xml)/$1_R$2/' *.xml 
0

Вы можете использовать для цикла, чтобы перебирать список слов (например, со списком имен файлов, возвращенного 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 
+0

Небольшое описание этого решения не повредит – Sentry