100個のファイルのリストとそのパスを含むfile.txtがあります。最初の3つの項目は次のとおりです。
/project/msun/USERS/me/czi/data/lb/MAP-9-003/c44caf4c-cab7-4749-9940-a74a66bceec3/c44caf4c-cab7-4749-9940-a74a66bceec3.bam
/project/msun/USERS/me/czi/data/lb/MAP-9-007/3e5a10e0-3928-40c5-8dfb-9bbe9d5e0105/3e5a10e0-3928-40c5-8dfb-9bbe9d5e0105.bam
/project/msun/USERS/me/czi/data/lb/MAP-9-013/e230fce2-8f54-4d30-bb75-38d11a438f68/e230fce2-8f54-4d30-bb75-38d11a438f68.bam
このファイルをcpにして新しいファイルの名前を変更し、別のディレクトリとパスに入れたいと思います。ここで、新しいディレクトリ名は前のパスのレベル8のディレクトリであり、新しいファイル名=新しいディレクトリ名+ファイル拡張子です。新しいディレクトリの場所も変更されます。新しいファイルを次のように並べ替えます。
/project/msun/USERS/me/czi/data/map/MAP-9-003/MAP-9-003.bam #(old c44caf4c-cab7-4749-9940-a74a66bceec3.bam)
/project/msun/USERS/me/czi/data/map/MAP-9-007/MAP-9-007.bam #(old 3e5a10e0-3928-40c5-8dfb-9bbe9d5e0105.bam)
/project/msun/USERS/me/czi/data/map/MAP-9-013/MAP-9-013.bam #(old e230fce2-8f54-4d30-bb75-38d11a438f68.bam)
次の投稿が見つかりました。 xargsを使用したディレクトリのコピーそして 複数のネストされたサブディレクトリから、特定の拡張子を持つファイルを単一のディレクトリにコピーし、コピーされた各ファイルにディレクトリ名を追加します。
関連タスクを実行しますが、特定のタスクを実行できません。
答え1
目的の場所にファイルをコピーします。名前を変更するには、次のようにします。真珠rename
:
スイッチの削除-n
、別名。試運転あなたの試みが満足なとき実際の名前に変更。
mkdir -p ./project/msun/USERS/me/czi/data/map
rename -n 's@(project/msun/USERS/me/czi/data/)lb/(MAP-.*?)/.*/.*.bam@$1map/$2.bam@' ./project/msun/USERS/me/czi/data/lb/MAP-9-0*/*/*.bam
# rm -rf ./project/msun/USERS/me/czi/data/lb/MAP*