![여러 디렉터리에서 파일을 복사하고 각 파일의 접두사에 숫자를 추가하시겠습니까?](https://linux55.com/image/12637/%EC%97%AC%EB%9F%AC%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B3%B5%EC%82%AC%ED%95%98%EA%B3%A0%20%EA%B0%81%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%A0%91%EB%91%90%EC%82%AC%EC%97%90%20%EC%88%AB%EC%9E%90%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
여러 디렉터리에서 특정 이름의 파일을 복사해야 하고 파일 접두사에 번호를 순서대로 추가해야 합니다. 예를 들어 다음 디렉터리가 있고 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