bashは、他のファイルの一致に基づいて特定のファイルをフォルダに移動します。

bashは、他のファイルの一致に基づいて特定のファイルをフォルダに移動します。

.vcfvariants folderIDがあるフォルダに各ファイルをmvしようとしています。 inは常にバリアントフォルダにaのIDを持ちます。で始まる行は常にのフォルダと正確に一致します。には複数のフォルダがありますが、一致するフォルダは1つしかありません。複数のIDがあるかもしれませんが。/home/cmccabe/f2.vcffile$2file.vcffileR_2019-v5.6/home/cmccabe/f2/home/cmccabe/f2file.vcf/home/cmccabe/f1/variants

/home/cmccabe/f2のフォルダとフォルダR_2019の間に一致するものが見つかると、fileIDが検索さ$2れます。その後、各ファイルは新しいサブフォルダの一致するフォルダに移動さ​​れます。実行はされますが、ファイルは移動されません。ありがとうございます:)。/home/cmccabe/f1/variants.vcf.vcf/home/cmccabe/f2variantsbash

文書/home/cmccabe/f1から

IonCode_0007 19-0004-La-Fi
IonCode_0009 19-0005-Last-Firs
IonCode_0013 190320-Control
R_2019_03_12_13_59_54_user_S5-0271-100-v5.6_xxx_xxx_xxx_xxx_xx_x_xxx

バリアントフォルダ存在する/home/cmccabe/f1

19-0004-La-Fi.vcf
19-0005-Last-Firs.vcf
190320-Control.vcf

現在の構造~の/home/cmccabe/f2

R_2019_03_12_13_59_54_user_S5-0271-100   ---parent directory ---
   - bam    --- sub-folder ---
   - qc     --- sub-folder ---

必要な構造~の/home/cmccabe/f2

R_2019_03_12_13_59_54_user_S5-0271-100   ---parent directory ---
   - bam    --- sub-folder ---
   - qc     --- sub-folder ---
   - variants    --- new sub-folder ---
     - 19-0004-La-Fi.vcf
     - 19-0005-Last-Firs.vcf
     - 190320-Control.vcf

打撃の可能性

for file in /home/cmccabe/f1/variants/*.vcf ; do
  # Grab file prefix
  bname=$(basename $file) # strip of path
  VCF="$(echo $bname|cut -d. -f1)" # remove .vcf extension
  f=$(printf '%s' /home/cmccabe/f1/file/${VCF})  ## # Find matching id
  FILE2=$(awk '{print $2}' $f) # set VCF lookup to column
    for RDIR in /home/cmccabe/f1/file/R_2019* ; do FOLDER=${RDIR%%-v5.6*}; done  ## trim R_2019 line in file from -v5.6 and store in FOLDER
  if [[ $VCF = $FILE2 ]] # only execute file on match
  then
      mkdir -p /home/cmccabe/f2/$FOLDER/variants  ## create variants sub-folder
       mv /home/cmccabe/f1/file/$VCF /home/cmccabe/f2/$FOLDER/variants  ## move vcf to folder
  fi  ## end if
done  ## close loop

ベストアンサー1

おすすめ記事