하위 디렉터리에 많은 파일이 있는데 모두 상위 디렉터리로 이동하고 싶습니다.
전임자:
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
실제로 파일 이름을 바꾸는 옵션을 제거하십시오(실제 이름을 바꾸면 아무 것도 인쇄되지 않습니다).