![Unix를 사용하여 중첩된 디렉터리의 파일을 경로에서 이름이 파생된 디렉터리로 복사하고 재배치하고 이름을 바꿉니다.](https://linux55.com/image/217625/Unix%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%A4%91%EC%B2%A9%EB%90%9C%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EA%B2%BD%EB%A1%9C%EC%97%90%EC%84%9C%20%EC%9D%B4%EB%A6%84%EC%9D%B4%20%ED%8C%8C%EC%83%9D%EB%90%9C%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A1%9C%20%EB%B3%B5%EC%82%AC%ED%95%98%EA%B3%A0%20%EC%9E%AC%EB%B0%B0%EC%B9%98%ED%95%98%EA%B3%A0%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
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*