名前のあるファイルは、その名前のあるディレクトリに移動する必要があります。

名前のあるファイルは、その名前のあるディレクトリに移動する必要があります。

名前があります。

患者サンプル_L001_R1_001、患者サンプル_L002_R1_001、患者サンプル_L003_R1_001、患者サンプル_L004_R1_001

名前の異なるグループ

患者サンプル_L001_R1_002、患者サンプル_L002_R1_002、患者サンプル_L003_R1_002、患者サンプル_L004_R1_002、

その他 4 つのファイルで構成される各セット (他のエンド番号 001,002,003) について、 Patient0001 または Patient 0002 などというラベルの付いた適切なディレクトリに移動する必要があります。私はこのセットを約200個持っています。エンド番号の異なるファイルをスキャンして適切な患者フォルダに配置するコマンドはありますか?

つまり、Patient_sample_L001_R1_001、Patient_sample_L002_R1_001、Patient_sample_L003_R1_001、Patient_sample_L004_R1_001、「患者0001フォルダなど」に入ります。

各ファイルは異なるディレクトリにあります。たとえば、ホームディレクトリには、患者1のデータを含むrun40というディレクトリがあります。その後、run41には患者2データなどがあります。デフォルトのディレクトリに戻ると、「total_patent_samples」という別のディレクトリがあります。ここでは、「ru​​n40、run41」ディレクトリからファイルを移動したいすべてのディレクトリを見つけることができます。このファイルには、患者0001、患者0002、患者0003があります。上記のデータファイルをここに入れたいです。

ベストアンサー1

どうですか?

for i in `seq -f '%03g' 1 200`; do
    FOLDER=patient0$i
    mkdir -p total_patient_samples/$FOLDER    # creates folder if missing
    find . -regex ".*patient_sample_L00._R._${i}$" -type f -exec mv -i {} total_patient_samples/$FOLDER/ \; # moves patient data if not already there, else prompts
done

この操作をi001から200まで繰り返し(必要に応じて200変更)、患者フォルダを作成し(mkdir ...必要でない場合は行を削除)、指定した構造内のすべての患者を見つけてフォルダに移動します。

おすすめ記事