2016-11-30 168 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您要查找的目錄之後,如果你不希望它是遞歸找到