如何使用shell将字符串添加到另一个目录中的文件集合名称的开头

时间:2016-06-10 00:26:54

标签: bash shell

我在项目/报告文件夹中有一堆.xml文件。从“project”文件夹中,我需要将字符串“TEST-”添加到“reports”文件夹中的每个.xml文件中。我知道每个.xml文件都以相同的字符串开头,并以.xml结尾,但我不知道中间。我该怎么做呢?

即。原始文件:constantfilename.xml,新文件:TEST-constantfilename.xml

我不能自己硬编码测试的名称,它只需要能够将字符串添加到扩展名为.xml的文件夹中的所有文件。我已经看到很多方法可以重命名当前文件夹中的文件,如下所示:

for f in *.xml
do
    mv "$f" "TEST-$f"
done

但是当我需要从另一个目录更改它时,我不明白如何应用它。

任何帮助将不胜感激!在任何人要求之前,不能只是导航到该文件夹​​,它必须来自“项目”文件夹。

2 个答案:

答案 0 :(得分:2)

经过大量的谷歌搜索后,我最终做到了这一点。它查找我知道的字符串常量是在我的文件的前面,并用TEST-constant替换它。

for f in project/reports/*.xml
do
    a="$(echo $f | sed s/constant/TEST-constant/)"
    mv "$f" "$a"
done

答案 1 :(得分:1)

您可以使用以下单行(假设您在项目文件夹中):

ls reports/*xml | awk -F '/' '{print "mv "$0" "$1"/TEST-"$2}' | sh

不像你的那么干净,但它应该给出相同的结果。