다음과 같은 디렉토리 구조가 있습니다.
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
( rename
Debian/Ubuntu 및 prename
RHEL/Centos라고도 함)의 경우:
perl-rename -n 's:([^/]+)/(.+).json:path/to/new/dir/$2_$1.json:' */*.json
실제 실행 -n
으로 대체되었습니다 .-v