Shell-Script
從多個目錄複製文件並在每個文件的前綴中添加數字?
我需要從多個目錄中複製一個特定的命名文件,並且需要在文件前綴中按順序添加數字。例如,我有以下目錄,
gene1, gene2, gene3 ..... gene100
每個目錄都有一個文件,即protein.fasta
. 我需要protein.fasta
從每個目錄中複製所有文件並粘貼到另一個目錄中,即輸出。我嘗試了以下腳本,但該腳本不符合我的目的,它只複製和粘貼一個文件,其余文件沒有被複製和重命名,最終出現錯誤。請幫助我做同樣的事情。a=1 for i in **/protein.fasta do cp "$i" "$a"_"$i" output/ a=`expr $a + 1` done
下面給出了詳細的範例和預期的輸出,目錄
gene1, gene2, gene3....gene100
要從每個文件中提取的文件是
protein.fasta
output
目錄中的預期輸出1_protein.fasta 2_protein.fasta 3_protein.fasta . . 100_protein.fasta
先感謝您。
您應該能夠遍歷目錄並從目前目錄名稱中刪除
gene
前綴以用作目標文件名的前綴:for d in gene*; do echo cp "$d/protein.fasta" "output/${d#gene}_protein.fasta" done
echo
一旦您對它正在做正確的事情感到滿意,請刪除它。
我想也許你想用來
basename
從文件名中刪除目錄?i=1 for f in **/test.file; do cp "${f}" "out/${i}_$(basename $f)" (( i += 1 )) done