여러 디렉터리에서 특정 이름의 파일을 복사해야 하고 파일 접두사에 번호를 순서대로 추가해야 합니다. 예를 들어 다음 디렉터리가 있고 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
미리 감사드립니다.
답변1
루프를 할 수 있어야합니다.목차그리고 gene
현재 디렉터리 이름에서 접두사를 제거하여 대상 파일 이름의 접두사로 사용합니다.
for d in gene*; do
echo cp "$d/protein.fasta" "output/${d#gene}_protein.fasta"
done
echo
올바른 일을 하고 있다는 확신이 들면 제거하세요.
답변2
basename
파일 이름에서 디렉터리를 제거하는 데 사용하고 싶으신가요 ?
i=1
for f in **/test.file; do
cp "${f}" "out/${i}_$(basename $f)"
(( i += 1 ))
done