한 디렉토리 내에 여러 디렉토리가 있습니다.
Astrocytes_BloodCells_GeneSet/ Astrocytes_Polydendrocytes_GeneSet/ Endothelia_Neurons_GeneSet/ Microglia.y_Neurons_GeneSet/ Oligodendrocytes_Microglia.y_GeneSet/ Polydendrocytes_Microglia.x_GeneSet/
Astrocytes_Endothelia_GeneSet/ BloodCells_Endothelia_GeneSet/ Microglia.x_BloodCells_GeneSet/ Oligodendrocytes_Astrocytes_GeneSet/ Oligodendrocytes_Neurons_GeneSet/ Polydendrocytes_Microglia.y_GeneSet/
Astrocytes_Microglia.x_GeneSet/ BloodCells_Microglia.y_GeneSet/ Microglia.x_Endothelia_GeneSet/ Oligodendrocytes_BloodCells_GeneSet/ Oligodendrocytes_Polydendrocytes_GeneSet/ Polydendrocytes_Neurons_GeneSet/
Astrocytes_Microglia.y_GeneSet/
각 하위 디렉터리에는 다음 형식을 따르는 폴더가 포함되어 있습니다.
_.LD_RESULTS_directoryname
예를 들어 등 Astrocytes_BloodCells_GeneSet/
의 폴더를 포함합니다 . _.LD_RESULTS_Astrocytes_BloodCells_GeneSet/
이 디렉터리에는 여러 개의 .txt 파일이 있습니다.
Astrocytes_BloodCells_GeneSet/,Astrocytes_Polydendrocytes_GeneSet/
_.LD_RESULTS_directoryname
.txt 등을 폴더 에 복사하는 간단한 스크립트를 작성하려고 합니다 . 이 목표를 어떻게 달성할 수 있나요?
답변1
이러한 디렉토리만 포함된 최상위 디렉토리가 있다고 가정하면 다음 쉘 스크립트는 _.LD_RESULTS_
하위 디렉토리를 생성하고 필요한 경우 복사할 수 있다고 생각합니다.
#!/bin/bash
for i in */
do
target="$i/_.LD_RESULTS_$i"
mkdir -p "$target"
cp -p "${i}"*.txt "$target"
done
복사하시겠습니까? 또 다른 방법은 파일을 이동하는 것입니다. 백업을 원할 경우 다른 드라이브에 저장해야 합니다(드라이브 충돌 시 생존을 위해).
답변2
_.LD_RESULTS 디렉터리 이름에 정확히 상위 디렉터리 이름이 포함되어 있으면 이 for
루프가 트릭을 수행해야 합니다.
for dir in *_*_GeneSet
do
echo cp "$dir"/*.txt "$dir"/_.LD_RESULTS_"$dir"/
done
for
저는 상위 디렉터리 이름으로 "무엇이든", 밑줄, "무엇이든", 밑줄, "GeneSet"이 필요한 순환 와일드카드 패턴을 사용했습니다 . 범위를 확장하거나 축소하려면 필요에 따라 조정하세요.