2015-05-27 2 views
0

Привет всем, я хотел бы знать, как переименовать файл, используя часть имени, хранящегося в переменной. Чтобы быть более ясным, я покажу вам пример. Предположим, что мне нужно пропустить все файлы, называемые test _ *. Txt, поэтому test_1.txt, test_2.txt ... test_45.txt и так далее. В точке в контуре мне нужно переименовать файл тест-name.txt в тест-name1.txt, тест-name2.txt в соответствии с номером в файле test_1.txtкак переименовать файл, используя часть имени, хранящегося в переменной

for test in test_*.txt 
do 
    'rename test-name.txt to test-name(number in test).txt' 
done 
+0

После того, как 'тест-name.txt' был переименован в' тест-name1.txt', какой файл будет переименован в 'тест -name2.txt'? – anubhava

ответ

2

Это должно работать :

for tst in test_*.txt 
do 
    nr=${tst#test_} # Delete 'test_' from beginning of file name in tst 
    nr=${nr%.txt} # Delete '.txt' from end of file name in tst 
    mv test_name.txt test_name_${nr}.txt 
done 
0

Вы можете также использовать шаблон, соответствующий в Баш:

[[ $file =~ test_(.*).txt ]]; 
mv test_name.txt test_name${BASH_REMATCH[1]}.txt