스크립트는 완료되기 전에 완료됩니다. 파일은 초기 입력 파일 세트에서 다른 접미사가 있는 출력 파일로 생성됩니다.
파일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
디렉토리 로 이동