
종종 xournal
. "새" 파일 디렉터리로 시작하는 경우 다음을 pdf
사용하여 해당 파일을 모두 엽니다 xournal
.
for f in *pdf; do xournal $f&; done
파일에 주석을 달기 시작할 때 a라고 말하면 .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