Possible Duplicate:
Unix “find” command usage
これはbashインストールスクリプトのためのものです。スクリプトfoo.shは引数として "DIRECTORY"をとります。さあ、dir/TEST/TEST_1A/TEST_2A/TEST_3と別のディレクトリ/ TEST/TEST_1B/TEST_2B/TEST_3があるとします。
スクリプト:foo.shを簡単に説明します。
DIR=`find $HOME -type d -name $1 | head 1'
if [ DIR is set to a directory ]
then
rm -rf $DIR
使用法:foo.sh TEST_3
スクリプトからは、/ TEST/TEST_1A/TEST_2A/TEST_3のみを削除できます。/TEST/TEST_1B/TEST_2B/TEST_3を削除するには、findコマンドでreg expを使用して、ディレクトリの競合を解決するために削除を微調整する必要があります。
上記のスクリプトの検索部分を次のように変更しました
DIR='find $HOME -type d -regexp $1 | head 1
新しい使用法:foo.sh TEST_2B/TEST_3
But "find" command FAILS to get the DIR set to /TEST/TEST_1B/TEST_2B/TEST_3 and instead returns empty & as a result DIR is empty and I can never ever remove /TEST/TEST_1B/TEST_2B/TEST_3
どのようにスクリプトを変更すれば、findはディレクトリ名だけでなく、ディレクトリへのパスにも何の問題も起こらないようにすることができます。事実、一部のユーザは、 "foo.sh"の引数として部分的なディレクトリパスを与えるかもしれません。そのような場合でも "foo.sh"が動作することを期待しています