Unixを使用して、ネストされたディレクトリのファイルをパスから名前が派生したディレクトリにコピーして再配置し、名前を変更します。

Unixを使用して、ネストされたディレクトリのファイルをパスから名前が派生したディレクトリにコピーして再配置し、名前を変更します。

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*

おすすめ記事