하위 디렉터리의 모든 파일을 상위 디렉터리로 일괄 이동하지만 파일 이름이 동일합니다.

하위 디렉터리의 모든 파일을 상위 디렉터리로 일괄 이동하지만 파일 이름이 동일합니다.

하위 디렉터리에 많은 파일이 있는데 모두 상위 디렉터리로 이동하고 싶습니다.

전임자:

20150530XXXX/1.jpg
20150530XXXX/2.jpg
20150530XXXX/3.jpg
20150530XXXX/4.jpg
20150531XXXX/1.jpg
20150531XXXX/2.jpg
20150531XXXX/3.jpg
20150531XXXX/4.jpg

stackexchange의 다른 질문에서 다음 명령을 찾았습니다.

find ./ -mindepth 2 -type f -exec mv -t A {} +

하지만 이는 각 이미지 파일의 이름이 동일하므로( ) 이미지 파일을 덮어쓰는 것으로 보입니다 1-4.jpg. 하위 디렉토리 이름을 파일 이름 20150531XXXX/4.jpg과 연결할 수 있는 방법이 있습니까 ./20150531XXXX_4.jpg?

답변1

perl다음 버전이 있는 경우 rename( prename일부 배포판에 지정됨):

find . -type f -mindepth 2 -name '*.jpg' -exec rename -n 's!/([^/]+)$!_$1!' {} +

이는 명령이 수행하는 작업만 보여줍니다. 이에 만족한다면 -n실제로 파일 이름을 바꾸는 옵션을 제거하십시오(실제 이름을 바꾸면 아무 것도 인쇄되지 않습니다).

관련 정보