2017-03-23 4 views
2

私は現在、クラスの中でLinuxデバイスのシェルスクリプトを勉強しています。シンボリックリンクが空のフォルダを指しているかどうかを確認する方法

私は、空のフォルダを指し示すシンボリックリンクを見つけるシェルスクリプトを書くことを任されました。今度は最初の2つの部分は簡単です - 私は-type l-xtype dのようなテストでfindコマンドを使う方法を知っています。この問題は、フォルダ自体が空であるかどうかを調べることによって発生します。私は先生に尋ねましたが、私が持っているのはxargsまたはexecの引数についての暗黙のヒントでした。私は実際に指示に従って使用することはできません。これまでのところ私のベスト・ベットは、findの結果をforループに投げて、各ループのリンクから取得するパスをテストすることですが、それはうまくいかないようです。これまでのところ、私のコードは次のようになっています:

for var in $`find $1/* -type l -xtype d -print` 
do 
    if [ $`readlink -f $var` -empty ] 
    then 
    echo $`readlink -f $var` 
    fi 
done 

ご協力いただければ幸いです!

答えて

2

-emptyオプションをお探しですか?

$ mkdir empty_folder 
$ ln -s empty_folder/ symlink 
$ find symlink -type d -empty 
symlink 

これは、ファイル拡張子を使用して行うこともできます。

$ shopt -s dotglob failglob 
$ true symlink/* 
bash: no match: symlink/* 
+0

2番目の部分の意味はわかりませんが、そのマニュアルを読むことにします。最初の部分では、選択したディレクトリツリー内のすべてのシンボリックリンクを見つけるはずですが、シンボリックリンクが空のフォルダを指しているかどうかを '-type d -empty'で確認できますか? – DeadBrain

+0

シンボリックリンクに関する完全な動作はhttps://www.gnu.org/software/findutils/manual/html_mono/find.html#Symbolic-Linksにありますが、私はそれが何をしているのか完全にはわからないことを認めます。 –

関連する問題