Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用存储在变量中的部分名称重命名文件_Bash - Fatal编程技术网

Bash 如何使用存储在变量中的部分名称重命名文件

Bash 如何使用存储在变量中的部分名称重命名文件,bash,Bash,大家好,我想知道如何使用存储在变量中的部分名称重命名文件。为了更清楚,我给你举个例子。 假设我必须遍历所有名为test_u*.txt的文件,所以test_1.txt、test_2.txt。。。test_45.txt等等。 在循环中的某个点,我需要根据test_1.txt文件中的编号重命名test-name1.txt、test-name2.txt中的文件test-name.txt for test in test_*.txt do 'rename test-name.txt to

大家好,我想知道如何使用存储在变量中的部分名称重命名文件。为了更清楚,我给你举个例子。 假设我必须遍历所有名为test_u*.txt的文件,所以test_1.txt、test_2.txt。。。test_45.txt等等。 在循环中的某个点,我需要根据test_1.txt文件中的编号重命名test-name1.txt、test-name2.txt中的文件test-name.txt

 for test in test_*.txt
 do 
     'rename test-name.txt to test-name(number in test).txt'
 done   
这应该起作用:

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

您还可以在bash中使用模式匹配:

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

一旦
test-name.txt
被重命名为
test-name1.txt
哪个文件将被重命名为
test-name2.txt