「複数のディレクトリから1つのディレクトリにファイルをコピーする」ことについて考えられるすべての回答を探してきましたが、答えが見つかりません。私のデータベースの取り扱いには、もう少し具体的なものが必要です。
同様の質問があります:
複数のディレクトリから別の複数のディレクトリへのファイルのコピー
しかし、どのディレクトリからコピーされたかを認識できるように、これらのファイル(すべて同じ名前)を新しいディレクトリにコピーして親ディレクトリ名を追加するにはどうすればよいですか?
はい、私はそれらの100個を持っていなかった場合、私は名前を次々にコピーして名前を変更することができました
Findでループを試しました。など、それでも、コピーしたファイルを親ディレクトリ名に追加できません。
私はこの分野でまだ若いので、正規表現から始めています。ここで何かやるべきことがあると思いますが、どの程度正確かはわかりません。
だから、これはグラフィカルに私の質問です。私のUNIX端末で簡単なコマンドまたはループを使用してそれを行う方法:
DIR_a1 --> output_file.bam
DIR_a2 --> output_file.bam
DIR_a3 --> output_file.bam
すべてコピーoutput_files.bam
in NEWDIR_output
で、親ディレクトリ名とともに表示されます。
output_file_a1.bam
output_file_a2.bam
output_file_a3.bam
事前に、どんな入力にも非常に感謝しています
以下のスクリプトは、ファイルを再帰的にソースディレクトリからflatディレクトリにコピーし、(直接)上位ディレクトリの名前をファイル名に追加します。ディレクトリの名前が挿入されます前ファイルの可能な拡張子、例とまったく同じです。
#!/usr/bin/env python3
import os
import sys
import shutil
for root, dirs, files in os.walk(sys.argv[1]):
for f in files:
# split off the superior directory's name
dirname = root.split("/")[-1]
# define file+path, possible extension position
src = os.path.join(root, f); spl = f.rfind(".")
# defining new filename
newname = f[:spl]+"_"+dirname + f[spl:] if spl != -1 else f+"_"+dirname
# copy the file into the new directory
shutil.copyfile(src, os.path.join(sys.argv[2], newname))
copyandrename.py
として保存しますソースおよびターゲットディレクトリを引数として実行します。
python3 /path/to/copyandrename.py <source_directory> <target_directory>
私のテストコマンドは、例えば.
python3 '/home/jacob/Bureaublad/pscript_4.py' '/home/jacob/Bureaublad/testmap' '/home/jacob/Bureaublad/target'
いつものように、最初にサンプルでテストしてください!
シェルのパラメーター置換機能を使用してこれを行うことができるはずです。
$ for d in DIR_a*; do echo cp -- "$d/output_file.bam" "NEWDIR_OUTPUT/output_file${d#DIR}.bam"; done
cp DIR_a1/output_file.bam NEWDIR_OUTPUT/output_file_a1.bam
cp DIR_a2/output_file.bam NEWDIR_OUTPUT/output_file_a2.bam
cp DIR_a3/output_file.bam NEWDIR_OUTPUT/output_file_a3.bam
正しいことを実行していることを確認したら、echo
を削除します。