접미사가 다른 다른 파일이 있는 경우에만 파일 이동

접미사가 다른 다른 파일이 있는 경우에만 파일 이동

스크립트는 완료되기 전에 완료됩니다. 파일은 초기 입력 파일 세트에서 다른 접미사가 있는 출력 파일로 생성됩니다.

파일1.ext -> 파일1.oxt

(주어진 확장자는 임의적입니다.)

초기 스크립트를 다시 실행하기 전에 출력 파일이 이미 존재하는 별도의 디렉터리로 입력 파일만 이동할 수 있나요? "basename(file).oxt가 존재하는 경우에만 mv 파일을 생성하십시오"와 같은 것입니다. 이것은 다른 언어로도 할 수 있지만 Bash에 대한 지식이 매우 부족합니다.

감사해요!

답변1

이것은 Bash 스크립트입니다:

for file in `ls *.old`
do
    BASE="${file%.*}"
    if [[ -e ${BASE}.new ]]
    then
        mv $file /yourdir/
    fi
done

.old 및 .new를 접미사로 바꾸고 yourdir을 실제 디렉토리로 바꾸십시오.

답변2

찾다+세게 때리다해결책:

find . -type f ! -name "*.oxt" -exec bash -c 'f=$1; 
        fp="${f%.*}"; [[ -f "$fp.oxt" ]] && mv "$f" dest_dir/' _ {} \;

  • f=$1- 전체 파일 경로

  • fp="${f%.*}"- 확장자가 제거된 파일 경로(확장자 없음)

  • [[ -f "$fp.oxt" ]]- 해당 "출력" 파일이 있는지 확인하세요.

  • mv "$f" dest_dir/- 초기 파일을 dest_dir디렉토리 로 이동

관련 정보