수정된 파일 이름을 복사하세요.

수정된 파일 이름을 복사하세요.

디렉토리에서 숫자로 끝나는 모든 파일을 찾아서(이 부분에서는 문제 없음) 수정된 이름으로 복사해야 합니다(이 부분을 어떻게 해야 할지 모르겠습니다). 대개:

find $folder -maxdepth 1 -type f -name '*-[0-9]\.jpg'

이 모든 파일을 동일한 디렉토리에 복사하고 이름을 지정하십시오.$originalName-mini.jpg

답변1

find+bash해결책:

find $folder -maxdepth 1 -type f -name "*-[0-9].jpg" -exec \
bash -c 'cp "$1" "${1:0:-4}-mini.jpg"' _ {} \;

답변2

실제로는 이것이 필요하지 않습니다 find. 단일 디렉토리만 보고 있기 때문에 쉘 루프만으로 작업을 수행할 수 있습니다. 또한 파일 이름 글로빙 패턴에서 점을 이스케이프 처리할 필요가 없습니다.

for pathname in "$folder"/*-[0-9].jpg; do
    [ -f "$pathname" ] && cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg"
done

매개변수 대체는 ${variable%pattern}값 끝에서 제거됩니다.patternvariable

-f테스트를 통해 우리는 이름이 잘못된 디렉토리가 아닌 일반 파일(또는 이를 가리키는 심볼릭 링크)을 다루고 있는지 확실히 확인할 수 있습니다.


find동일한 작업을 수행하는 데 사용합니다 .

find "$folder" -maxdepth 1 -type f -name '*-[0-9].jpg' -exec sh -c '
    for pathname do
        cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg"
    done' sh {} +

답변3

이를 수행하는 한 가지 방법은 다음 명령을 스크립트에 추가하는 것입니다. 원래 이름이 있다고 가정하면 $originalName다음을 사용할 수 있습니다.

cp $originalName $(basename $originalName .jpg)-mini.jpg

관련 정보