나는 종종 여러 PDF 문서에 주석을 달기 위해 그것을 사용해야 합니다 xournal
. "새" 파일이 있는 디렉토리에서 시작하면 다음 pdf
을 사용하여 파일을 엽니다 xournal
.
for f in *pdf; do xournal $f&; done
.pdf
파일에 주석을 달기 시작할 때 파일을 로 저장한다고 가정해 보겠습니다 .xoj
. 즉, 파일 확장자를 바꾸기만 하면 됩니다. 이제 중단된 세션이 있고 해당 파일이 없으면 .pdf
디렉터리의 모든 파일을 열고 , 그렇지 않으면 파일을 엽니다(둘 다 사용하여 )..xoj
.xoj
xournal
명령줄에서 이 작업을 어떻게 수행할 수 있나요?
답변1
.pdf
확장자가 없는 파일 이름을 삭제하고 확장자가 있는 해당 이름의 파일을 확인하려면 삭제할 수 있습니다 .xoj
.
for f in *.pdf
do
if [ -f "${f%.pdf}".xoj ]
then
xournal "${f%.pdf}".xoj &
else
xournal "${f}" &
fi
done
답변2
for f in *.pdf; do
fname=$(basename "$f" .pdf);
if [[ -e "${fname}".xoj ]]; then
# .xoj file does exist, do things here
else
# .xoj file doesn't exist, do other things here
fi
done
답변3
당신 과 함께 zsh
당신은 사용할 수 있습니다e
끈 글로벌 예선:
for f (./*.pdf(.e_'[[ ! -f $REPLY:r.xoj ]] || REPLY=$REPLY:r.xoj'_))
xournal $f &
이 문자열은 [[ ! -f $REPLY:r.xoj ]] || REPLY=$REPLY:r.xoj
쉘 코드로 실행됩니다. REPLY
현재 매개변수 값을 저장합니다. .xoj
현재 파일에 해당 파일이 없으면 반환 .pdf
되고 [[ ! -f $REPLY:r.xoj ]]
아무 true
일도 일어나지 않습니다( REPLY
변경되지 않은 상태로 유지됨).
현재 파일에 해당 파일이 존재 하면 반환하고 실행하며 (수정자를 통해) 현재 매개 변수의 확장자를 ..xoj
.pdf
[[ ! -f $REPLY:r.xoj ]]
false
REPLY=$REPLY:r.xoj
:r
.pdf
.xoj
답변4
단지 명확하고 간결하게 설명하려고 노력하고 있습니다. xournal은 한 곳에서만 재할당 f
되고 호출되며 확장 장식은 한 번만 액세스됩니다 ${f%.pdf}
.
for f in *.pdf
do
xoj = "${f%.pdf}.xoj"
[ -f "$xoj" ] && f="$xoj"
xournal "$f" &
done