
我需要使用循環重命名一些文件,但我無法讓它工作,因為我對 Linux 還很陌生。需要重命名的檔案有:
E9-GOWN33_multiplemap.bin.10.fa
E9-GOWN33_multiplemap.bin.16.fa
E9-GOWN33_multiplemap.bin.21.fa
E9-GOWN33_multiplemap.bin.7.fa
較短的名稱,例如:
E9.bin.10.fa
E9.bin.16.fa
E9.bin.21.fa
E9.bin.7.fa
我已經使用了rename
andmv
以及我在線程中看到的其他循環,但仍然無法讓它工作。非常感謝任何意見!謝謝你!
答案1
如果你有 perl rename
(Ubuntu、Debian 和許多其他系統上預設),你可以這樣做
rename -n 's/-GOWN33_multiplemap//' ./*fa
如果這為您提供了正確的文件名,請運行而不-n
實際重命名它們:
rename 's/-GOWN33_multiplemap//' ./*fa
答案2
你可以試試這個:
for f in *.fa; do
echo mv -- "$f" "${f%-*}.${f#*.}"
done
結果:
E9.bin.10.fa
E9.bin.16.fa
E9.bin.21.fa
E9.bin.7.fa
答案3
假設所有這些文件都位於當前目錄中,並且所有這些文件(沒有其他文件)都與通配模式匹配
E9-GOWN33_multiplemap.bin.*.fa
然後,你可以循環這些
for name in E9-GOWN33_multiplemap.bin.*.fa; do
# more code here
done
在循環內,$name
將是這些文件之一的名稱。
E9-GOWN33_multiplemap.bin.10.fa
給定中的名稱$name
,我們可以使用以下E9-GOWN33_multiplemap
命令從名稱開頭刪除該位
${name#E9-GOWN33_multiplemap}
E9
然後只需將初始字串重新附加到要建立的字串的前面即可E9.bin.10.fa
:
newname=E9${name#E9-GOWN33_multiplemap}
然後mv
我們可以將舊檔案名稱重新命名為新檔案名稱:
mv "$name" "$newname"
所以,這樣我們就有了
for name in E9-GOWN33_multiplemap.bin.*.fa; do
newname=E9${name#E9-GOWN33_multiplemap}
mv "$name" "$newname"
done
或者更短,
for name in E9-GOWN33_multiplemap.bin.*.fa; do
mv "$name" "E9${name#E9-GOWN33_multiplemap}"
done
答案4
for f in *.fa; do mv -- "$f" "${f/-*p./.}"; done
- 輸入:
E9-GOWN33_multiplemap.bin.7.fa E9-GOWN33_multiplemap.bin.10.fa E9-GOWN33_multiplemap.bin.16.fa E9-GOWN33_multiplemap.bin.21.fa
- 輸出:
E9.bin.7.fa E9.bin.10.fa E9.bin.16.fa E9.bin.21.fa
你也可以使用這個腳本:
#!/bin/bash
# Set the directory path where the files are located
directory="/path/to/files"
# Loop through the files in the directory
for file in "$directory"/E9-GOWN33_multiplemap.bin.*.fa; do
# Extract the original filename
filename=$(basename "$file")
# Extract the numeric part from the original filename
number=$(echo "$filename" | awk -F'.' '{ print $3 }')
# Create the new filename
new_filename="E9.bin.$number.fa"
# Rename the file
mv "$file" "$directory/$new_filename"
done
在此腳本中,for 迴圈迭代指定目錄中與模式 E9-GOWN33_multiplemap.bin.*.fa 相符的檔案。在循環內,使用基本名稱提取原始檔案名稱。然後,使用 awk 提取數字部分。最後,透過將固定部分(E9.bin.)與提取的數字組合來建構新的檔案名稱。 mv 指令用於使用新檔名重命名檔。