파일 확장자가없는 파일을 포함하는 몇 개의 디렉토리와 하위 디렉토리가 있습니다. .jpg
이 디렉토리에 포함 된 모든 파일 에 추가하고 싶습니다 . 파일 확장자를 변경하는 bash 스크립트를 보았지만 단순히 추가하는 것은 아닙니다. 또한 재귀 적이어야합니다. 누군가 도와 주시겠습니까?
답변
명시 적 루프가없는 대체 명령 ( man find
) :
find . -type f -exec mv '{}' '{}'.jpg \;
설명 : 이것은 -type f
현재 디렉토리 ( .
) 에서 시작하는 모든 파일 ( )을 재귀 적으로 찾고 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
패턴을 사용하면 일반적으로 각 파일에 대해 새 프로세스를 분기 할 필요가 없으므로보다 효율적인 실행이 가능합니다.
이를 위해서는 기존의 이름 변경이 아닌 데비안 기반 배포판 (일명 prename)에있는 이름 변경 버전이 필요합니다. 그러나 이것은 작은 펄 스크립트 일 뿐이므로 모든 시스템에서 위의 명령을 사용하는 것이 충분히 쉬울 것입니다.
답변
이렇게
for f in $(find . -type f); do mv $f ${f}.jpg; done
공백으로 구분 된 파일 이름이있을 것으로 예상하지 않습니다.
그렇다면 이름을 약간 처리해야합니다.
다른 디렉토리에서 명령을 실행
하려면 find .
을 find /target/directory
.
답변
Windows 기본에서 확장자가없는 모든 파일의 이름을 변경하려면 다음을 수행 할 수 있습니다 ren * *.jpg
. 파일이 확장자가 없으므로 *를 사용하거나 png를 jpg로 변경하려면ren *.png *.jpg
답변
rename
확장명이없는 파일의 이름을 바꿀 수 있는지 확실하지 않습니다 (지금 Windows 7을 사용 중입니다)