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*