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*

관련 정보