동일한 파티션에서 수백만 개의 파일을 이동하기 위한 올바른 구문을 잊어버렸습니다.

동일한 파티션에서 수백만 개의 파일을 이동하기 위한 올바른 구문을 잊어버렸습니다.

xargs를 사용하지 않고 100,000개의 jpg를 동일한 디스크/볼륨/파티션의 올바른 디렉터리로 이동하는 명령줄 지침이 있습니다. 이상한 점은 jpg에 공백과 여러 개의 마침표 또는 점이 있다는 것입니다. 예: "이상한 이미지.45 xyz.001 00.78.jpg". 또 다른 특이한 점은 엉뚱한 패턴이 컬렉션을 참조하므로 수천 개의 jpg가 있고 최종 jpg 확장자 앞에 추가 숫자 세트가 삽입된다는 것입니다: "wackyimage.45 xyz.001 00.78.details_0_34748-836389 .jpg. I' 이 기계의 설계 결정을 누가 내렸는지는 모르겠지만 어쨌든 저는 다음과 같은 것을 가지고 있습니다.

for f in ./“wacky image.45 xyz.name.s.00.78”*; do
    mv $f /path/to/destination/;
done

내가 무엇을 놓치고 있는지 잘 모르겠습니다.

편집: MacOS 터미널 앱을 사용하면 동작이 BSD와 거의 유사합니다.

답변1

for f in ./"wacky image.45 xyz.name.s.00.78"*; do
    mv "$f" /path/to/destination/;
done 

(인용문 참고) 같은 문제가 있었습니다

mv ./"wacky image.45 xyz.name.s.00.78"* /path/to/destination/

모두 와일드카드입니다. 필요한 "수백만"개의 파일은 다음과 같습니다.

find . -iname 'wacky image.45 xyz.name.s.00.78*'  -exec mv "{}"  /path/to/destination/

또는 파일별 논리를 원하는 경우

while read -r F ; do
    mv "$F"  /path/to/destination/
done < <(find . -iname 'wacky image.45 xyz.name.s.00.78*' )

답변2

Arkadiusz Drabczyk는 위의 "Put $f in double quote: "$f""에서 정확합니다.

이 기능을 사용하면 1백만 개 이상의 파일을 동일한 디스크/볼륨/파티션의 다른 디렉터리로 이동할 수 있습니다. 질문을 편집했지만 여기에도 입력하겠습니다. 저는 MacOS 10.14를 사용하고 있으며 터미널 앱은 대부분 BSD처럼 작동합니다. 좋든 나쁘든 Apple은 더 이상 운영 체제에서 32비트 응용 프로그램의 실행을 허용하지 않으므로 모든 CLI 도구는 64비트로 컴파일됩니다. 어쩌면 이것이 큰 매개변수 목록이 허용되는 이유일까요?

관련 정보