다른 디렉터리에 있는 같은 이름의 파일을 새 디렉터리로 복사하고 동시에 이름을 바꿉니다.

다른 디렉터리에 있는 같은 이름의 파일을 새 디렉터리로 복사하고 동시에 이름을 바꿉니다.

다음과 같은 디렉토리 구조가 있습니다.

top_dir
   |________AA
             |_______f1.json
             |_______f2.json
   |________BB
             |_______f1.json
             |_______f2.json
   |________CC
             |_______f1.json
             |_______f2.json

다음 구조를 얻기 위해 스크립트/명령줄 명령을 작성하고 싶습니다.

new_dir
       |_______f1_AA.json
       |_______f2_AA.json
       |_______f1_BB.json
       |_______f2_BB.json
       |_______f1_CC.json
       |_______f2_CC.json

파일 이름 바꾸기 및 이동된 파일 복사에 대한 몇 가지 솔루션을 읽어 보았습니다. 그러나 아직까지 이 문제를 해결하지 못했습니다. 감사해요!

답변1

루프를 사용하십시오.

mkdir /path_to/new_dir
cd /path_to/top_dir

for i in */*.json; do 
  cp "$i" "/path_to/new_dir/$(basename "$i" .json)_$(dirname "$i").json"
done
  • $(basename "$i" .json)접미사 없이 파일 이름을 인쇄합니다.f1
  • $(dirname "$i")디렉토리 이름을 인쇄합니다. 예:AA

답변2

Larry Wall perl-rename( renameDebian/Ubuntu 및 prenameRHEL/Centos라고도 함)의 경우:

perl-rename -n 's:([^/]+)/(.+).json:path/to/new/dir/$2_$1.json:' */*.json

실제 실행 -n으로 대체되었습니다 .-v

관련 정보