.txt 파일을 하위 디렉터리로 이동

.txt 파일을 하위 디렉터리로 이동

한 디렉토리 내에 여러 디렉토리가 있습니다.

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"이 필요한 순환 와일드카드 패턴을 사용했습니다 . 범위를 확장하거나 축소하려면 필요에 따라 조정하세요.

관련 정보