it-source

모든 파일에 파일 확장자를 재귀적으로 추가하다

criticalcode 2023. 4. 16. 15:14
반응형

모든 파일에 파일 확장자를 재귀적으로 추가하다

파일 확장자가 없는 파일이 포함된 디렉토리 및 하위 디렉토리가 몇 개 있습니다.추가하고 싶다.jpg이 디렉토리에 포함된 모든 파일로 이동합니다.파일 확장자를 변경하기 위한 bash 스크립트를 본 적이 있지만 파일 확장자를 하나만 추가하기 위한 스크립트는 아닙니다.재귀적이어야 하는데 누가 좀 도와주시겠어요?

명시적 루프()man find가 없는 대체 명령어:

find . -type f -exec mv '{}' '{}'.jpg \;

설명: 모든 파일을 재귀적으로 검색합니다(-type f)는 현재 디렉토리에서 시작합니다(.move 명령()mv을 적용합니다.또, 주위의 견적도 주의해 주세요.{}공백이 있는 파일 이름(새 행도 포함)이 올바르게 처리되도록 합니다.

확장자가 없는 파일이 검색되어 .jpg가 추가됩니다.

find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg \;

조금 늦었지만, 지금까지의 솔루션보다 더 좋은 솔루션(읽기 어려울 수도 있지만)을 추가하려고 합니다.

find /path -type f -not -name "*.*" -print0 | xargs -0 rename 's/(.)$/$1.jpg/'

사용방법find | xargs일반적으로 패턴은 각 파일에 대해 새로운 프로세스를 분리할 필요가 없기 때문에 보다 효율적으로 실행됩니다.

이를 위해서는 기존의 이름이 아닌 데비안 맛 디스트로(일명 프리네임)에서 볼 수 있는 이름의 버전이 필요합니다.다만, 이것은 작은 perl 스크립트이기 때문에, 어느 시스템에서도 상기의 커맨드를 사용할 수 있습니다.

이것처럼.

for f in $(find . -type f); do mv $f ${f}.jpg; done

공백으로 구분된 파일 이름이 있을 거라 생각하지 않습니다.
이 경우 이름을 좀 처리해야 합니다.

다른 디렉토리에서 명령을 실행하는 경우
를 교환할 수 있습니다.find .와 함께find /target/directory.

Windows Basic에서 확장자가 없는 모든 파일의 이름을 변경하려면 다음을 수행합니다.ren * *.jpg확장자가 없는 파일이므로 *를 사용하거나 png를 jpg use로 변경하려면ren *.png *.jpg

rename

확장자 없이 파일 이름을 바꿀 수 있을지 확실하지 않습니다(지금 Windows 7을 사용하고 있습니다).

언급URL : https://stackoverflow.com/questions/1108527/recursively-add-file-extension-to-all-files

반응형