
私はしばしば複数の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は1つの場所でのみ再割り当てされ、呼び出され、f
拡張装飾は一度だけアクセスされます${f%.pdf}
。
for f in *.pdf
do
xoj = "${f%.pdf}.xoj"
[ -f "$xoj" ] && f="$xoj"
xournal "$f" &
done