다음과 같은 2개의 폴더 구조가 있습니다.
SOURCE_FOLDER_W_GOOD_NAMES
├── A_some_name.png
├── B_another_different_name.png
├── C_just_another_too.png
└── D_this_one_stop_this_example.png
다른 폴더:
DESTINATION_FOLDER_W_INCREMENT_NAMES
├── icon_0.icns
├── icon_1.icns
├── icon_2.icns
└── icon_3.icns
따라서 기본적으로 SOURCE_FOLDER
알파벳순으로 정렬된 파일은 이미 포함되어 있습니다. 이 정렬 순서는 이미 일치합니다 DESTINATION_FOLDER
(예: A_some_name.png
=== icon_0.icns
).
이 루프 조합을 사용하여 파일 이름을 바꿉니다.
i=0
j=0
for img in SOURCE_FOLDER/*.png; do
for i in {0..10000}; do
let j++ || true;
mv "SOURCE_FOLDER/icon_$i.icns" "DESTINATION_FOLDER/${img%.*}.icns"
done
done
위 폴더의 루트에 있는 명령줄에서 이 작업을 수행했습니다(위는 형식이 지정되었으며 한 줄로 작성되었습니다).
THE_FATHER_FOLDER
├── SOURCE_FOLDER_W_GOOD_NAMES
└── DESTINATION_FOLDER_W_INCREMENT_NAMES
불행하게도 위의 루프는 예상대로 작동하지 않습니다. 내가 틀렸다고 확신하지만 어디인지 모르겠습니다.
제 말을 정정해주세요.
고쳐 쓰다
위 문제에 대한 해결책은 제가 직접 해결했습니다.
counter=0
for img in SOURCE_FOLDER/*.png; do
let counter++ || true;
mv "SOURCE_FOLDER/icon_$counter.icns" "DESTINATION_FOLDER/${img%.*}.icns"
done
하지만 이 폴더에는 여전히 문제가 있습니다.
DESTINATION_FOLDER_W_INCREMENT_NAMES
├── icon_0.icns
├── icon_1.icns
├── icon_2.icns
└── icon_3.icns
다시 색인을 생성하고 싶습니다.1바꾸다0, 그래서 저는 이것을 사용하고 있습니다:
counter=0
for index in {0..final_number}; do
let counter++ || true;
mv "icon_${index}.icns" "icon_${counter}.icns";
done
현재 내 파일의 위치는 다음과 같습니다.0그리고 마침내 얻는다최종 번호 - 1, 따라서 이 폴더의 모든 단일 파일을 덮어쓰며 첫 번째 파일(icon_0)만 가져오고 완료되면 이름을 (icon_final_number)로 바꿉니다.
이 문제를 어떻게 해결할 수 있나요?
답변1
이름을 바꾸고 싶나요?뒤로:
counter=$((final_number + 1))
for index in {final_number..0}; do
mv "icon_${index}.icns" "icon_${counter}.icns";
let counter--;
done
답변2
다음 코드를 사용하면 문제가 해결됩니다.
#!/bin/sh
i=0
for img in `ls SOURCE_FOLDER_W_GOOD_NAMES/*.png`; do
mv $img DESTINATION_FOLDER_W_INCREMENT_NAMES/icon_$i.icns
i=$((i+1));
done
답변3
0 대신 1의 값으로 카운터를 초기화하고 이동이 완료된 후 이를 증가시킵니다. 그러면 파일 이름을 바꾸기 위해 보조 bash 스크립트를 실행할 필요가 없으며 원본 스크립트에서 문제를 해결할 수 있습니다.
또한 카운터를 증가시킬 때 "|| true"를 추가하는 이유는 무엇입니까? 그것은 말이 되지 않습니다. 이 코드를 사용해 보세요
counter=1
for img in SOURCE_FOLDER/*.png; do
mv "SOURCE_FOLDER/icon_$counter.icns" "DESTINATION_FOLDER/${img%.*}.icns"
let counter++
done