2016-11-30 142 views
0

我需要重命名多个文件而不知道文件的文件名(基本名称/字符串名称)。批量重命名相同扩展名的多个文件

我试着用:

for i in $(ls /Users/Destiny/Desktop/Index/*.ebwt); 
do 
    mv -v "$i" "${i/hsa/hsa.genome.V86C}"; ## works when i know the string to replace 
done 

但如果不知道文件名(字符串名称)?

重命名前: hsa.1.ebwt hsa.2.ebwt hsa.3.ebwt hsa.4.ebwt

改名后: hsa.genome.V86C.1.ebwt hsa.genome .V86C.2.ebwt hsa.genome.V86C.3.ebwt hsa.genome.V86C.4.ebwt

+0

然后将其重命名为随机数字:D – fedorqui

+0

你将它重命名为?相同但有不同的后缀? – 123

+0

我在问这是因为我只知道文件的扩展名,我需要用soemthing重命名才能在不同的bash脚本中使用它。 – unique379

回答

0

你可以在你的目录中找到一些东西。如果他们都具有相同的扩展,则它可能是像下面与您的举动,你目前有:

find /Users/Destiny/Desktop/Index -type f -name "*.ebwt" | while read file; 
do 
mv -v "$file" "${file/hsa/hsa.genome.V86C}"; 
done 

这将其重命名当前目录内,如果你想将它移动到不同的目录后的路线,你可以围绕这样与基本名称的第二个参数,使移动更容易:

"/SomeDirectory/$(basename ${file/hsa/hsa.genome.V86C})" 

你也可以把一个-maxdepth 1您要查找的目录之后,如果你不希望它是递归找到