요약
이 기사에서는 macOS에서 터미널 명령을 사용하여 지정된 파일 이름의 사진을 일괄 복사하는 방법을 소개합니다. 웨딩 촬영 후 2,000여 장의 사진 중에서 번호가 매겨진 일부 파일을 선택해야 하는 상황에 대해 두 가지 솔루션을 제공합니다. 하나는 파일명 배열을 사용하여 직접 복사하는 것이고, 다른 하나는 쉼표로 구분된 번호가 붙은 파일을 동적으로 읽어 파일명 형식으로 변환하는 것입니다. 두 솔루션 모두 대상 폴더 생성, 777 권한 설정, find 및 cp 명령을 사용하여 파일을 재귀적으로 검색 및 복사하는 작업이 포함됩니다. 이 방법은 많은 수의 파일 중에서 지정된 파일을 정확하게 선택하고 전송해야 하는 시나리오에 적합합니다. 향후 명령줄 도구나 소프트웨어에 통합될 예정입니다.
지난번에 결혼식을 하고 나서 사진이 2,000장이 넘었어요. 오늘 몇 개 골랐는데 사진 이름에 있는 숫자만 기억났어요. 맥의 파일 검색은 영어 쉼표로 구분해서 빠른 검색이 가능하다고 생각했는데, 안되는 줄 누가 알았겠습니까? 이제 그것에 대해 생각해 볼 시간입니다.
Windows에서는 테스트되지 않음
Sudo 권한으로
명령을 사용해야 합니다. 준비 1. :
- *파일 경로*
/Volumes/婚礼/DCIM: - 내 사진은
/Volumes/婚礼/DCIM/matched_photos。 - (하위 폴더 포함)에 저장되어 있습니다. 목표는 일치하는 파일을
/Volumes/婚礼/DCIM/numbers.txt에 복사하는 것입니다.
0182,0178,0168,0165,0163,...
- *번호 목록*
IMG_编号.CR2: - 다음 내용이 포함된 텍스트 파일IMG_0182.CR2)。
- 에 저장된 쉼표로 구분된 번호 목록이 있습니다. :
- 이 숫자는 파일 이름 형식인
(예:
)로 변환해야 합니다.
환경
- :
- macOS 시스템(저는 macOS 기본 쉘인 zsh 쉘을 사용합니다).
0182,0178,0168,0165,0163,...
- 해결 방법 1: 파일 이름 목록
/Volumes/婚礼/DCIM/numbers.txt직접 사용
1. 넘버링 파일 준비
번호 매기기 목록이 텍스트 파일로 저장되었는지 확인하세요. 그렇지 않은 경우 수동으로 생성할 수 있습니다: IMG_XXXX.CR2"텍스트 편집"을 엽니다. IMG_ 숫자를 입력하세요. 예: .CR2는
- 로 저장됩니다(서식 있는 텍스트는 피하고 일반 텍스트 형식으로 저장하세요).
,2. 숫자를 파일 이름 형식.CR2,IMG_。 - 로 변환합니다.
IMG_내 사진 파일 이름 형식은.CR2。 - 이므로 번호에 접두사
IMG_0182.CR2,IMG_0178.CR2,IMG_0168.CR2,...
와 접미사
를 추가해야 합니다. 텍스트 편집기의 "찾기 및 바꾸기" 기능을 사용할 수 있습니다:
는
- 를 찾아
Command + 空格로 바꿉니다.
시작 부분에
를 수동으로 추가하고 끝에
mkdir -p /Volumes/婚礼/DCIM/matched_photos && chmod 777 /Volumes/婚礼/DCIM/matched_photos && numbers=(IMG_0182.CR2 IMG_0178.CR2 IMG_0168.CR2 IMG_0165.CR2 IMG_0163.CR2) && for number in $numbers; do find /Volumes/婚礼/DCIM -type f -name "$number" -exec cp {} /Volumes/婚礼/DCIM/matched_photos/ \; ; done && chmod 777 /Volumes/婚礼/DCIM/matched_photos/*
를 추가합니다.
- 예제 결과(일부):
- 3. 터미널 명령을 사용하여
- 파일 검색 및 복사
- 명령에 파일 이름 목록을 직접 작성하고 권한을 설정합니다: "$number"오픈 터미널
- 를 누르고 "터미널"을 입력한 후 Enter를 누릅니다.
- 명령을 입력하세요.
다음 명령을 터미널에 복사하고 실행합니다(여기에는 파일 이름 중 일부만 표시되며 전체 목록에는 151개가 포함됩니다):
명령 설명:
mkdir -p /Volumes/wedding/DCIM/matched_photos: 대상 폴더를 생성합니다.
chmod 777 /Volumes/wedding/DCIM/matched_photos: 대상 폴더에 대해 777 권한을 설정합니다.
0182,0178,0168,0165,0163,...
numbers=(...): 파일 이름 배열을 정의하고 변환된 파일 이름을 직접 사용합니다.
찾기/Volumes/wedding/DCIM -type f -name "$number": /Volumes/wedding/DCIM 및 해당 하위 폴더에서 정확한 파일 이름이 일치하는지 검색합니다.
-exec cp {} /Volumes/wedding/DCIM/matched_photos/ ;: 찾은 파일을 새 폴더에 복사합니다.
- chmod 777 /Volumes/wedding/DCIM/matched_photos/*: 복사된 모든 파일에 대해 777 권한을 설정합니다.
솔루션 2: Numbers.txt 파일을 동적으로 읽습니다.
번호 목록이 변경되거나 파일을 보다 유연하게 관리하려는 경우 number.txt를 사용하여 숫자를 동적으로 읽고 파일 이름을 생성할 수 있습니다.
mkdir -p /Volumes/婚礼/DCIM/matched_photos && chmod 777 /Volumes/婚礼/DCIM/matched_photos && numbers=($(cat /Volumes/婚礼/DCIM/numbers.txt | tr ',' ' ')) && for number in $numbers; do find /Volumes/婚礼/DCIM -type f -name "IMG_${number}.CR2" -exec cp {} /Volumes/婚礼/DCIM/matched_photos/ \; ; done && chmod 777 /Volumes/婚礼/DCIM/matched_photos/*
1. 넘버링 파일 준비
- /Volumes/wedding/DCIM/numbers.txt가 존재하고 콘텐츠가 쉼표로 구분된 숫자인지 확인하세요.
- 2. 터미널 명령을 사용하여
- 를 읽고 처리합니다.
- 다음 명령은 숫자.txt를 읽고, 숫자를 파일 이름 형식으로 변환하고, 검색을 수행하는 동시에 권한을 설정합니다.
- 3. 터미널 열기
- Command + Space를 누르고 "터미널"을 입력한 후 Enter를 누르세요.
- -name "IMG_${number}.CR2"4.
- 명령을 입력하세요.
- 다음 명령을 터미널에 복사하고 실행합니다.
명령 설명:
- mkdir -p /Volumes/wedding/DCIM/matched_photos: 대상 폴더를 생성합니다.
- chmod 777 /Volumes/wedding/DCIM/matched_photos: 대상 폴더에 대해 777 권한을 설정합니다.
numbers=($(cat /Volumes/wedding/DCIM/numbers.txt | tr ',' ' '))
cat는 숫자.txt를 읽습니다.
- tr ',' ' ' zsh 배열을 생성하려면 쉼표를 공백으로 바꾸세요.
ls /Volumes/婚礼/DCIM
$numbers의 숫자에 대해
- ; do ...: 각 숫자를 반복합니다(예: 0182).
find /Volumes/婚礼/DCIM -type f | head -n 10
-name "IMG_${number}.CR2": IMG_0182.CR2와 같은 파일 이름을 동적으로 생성합니다.
- -exec cp {} /Volumes/wedding/DCIM/matched_photos/ ;: 찾은 파일을 새 폴더에 복사합니다.
find /Volumes/婚礼/DCIM -type f -name "IMG_0182.CR2"
chmod777 /Volumes/wedding/DCIM/matched_photos/*: 복사된 모든 파일에 대해 777 권한을 설정합니다.
- 장점:
cat /Volumes/婚礼/DCIM/numbers.txt
번호를 변경해야 하는 경우 명령을 수정하지 않고 숫자.txt만 편집하면 됩니다.
- 는 더 유연하고 동적 요구에 적합합니다.
ls -l /Volumes/婚礼/DCIM/matched_photos
FAQ
1. 경로 오류
디스크가 마운트되어 있는지 확인:











