
ファイルセットへのシンボリックリンクを作成しようとしています。
pdf
origin_directory
拡張子がanのすべてのファイルを現在のディレクトリにリンクしたいとします。
これまで、私は次のコマンドを持っています。
ln -nfs origin_directory/*.pdf -t .
これは非常にうまく機能します。現在のディレクトリにファイルがないとpdf
問題が発生します。この場合、origin_directory
現在のディレクトリにファイルが作成され、リンクが失われるためです。*.pdf
これを避ける方法はありますか?
答え1
Bashではこれがうまくいきます
if [ -e origin_directory/*.pdf ] ; then ln -nfs origin_directory/*.pdf . ; fi
編集:ファイルが多すぎる場合
if [ $(ls origin_directory/*.pdf | wc -l) -gt "0" ] ; then ln -nfs origin_directory/*.pdf . ; fi
答え2
使用する場合は、bash
まず実行されます。
shopt -s failglob
または、より良い方法は、次のように入力することです。.bashrc
これでこれを行うたびに:
ln -nfs origin_directory/*.pdf -t .
成功または失敗します(エラーメッセージが表示され、何もしません)。
マニュアルから
failglobを設定すると、パス名拡張中にファイル名パターンが一致しない場合、拡張エラーが発生します。