2011-01-30 12 views
48

ディレクトリが存在するかどうかを確認し、存在する場合は削除することはできますか?私はANTの「sshexec」タスクを使用して、リモートマシンで1つのコマンドしか実行できない状況があります。そして、私は...ディレクトリが存在するかどうかを確認し、それを削除する必要がありディレクトリが存在するかどうかをチェックして1つのコマンドで削除するunix

+0

理由だけでは、rmdirを使用していませんか?ディレクトリが存在しない場合は失敗します。 – Ferruccio

+1

これは失敗します。私のANTスクリプトにはエラーがあります。それは私のビルドがクラッシュする原因になります。 – remo

+0

'mkdir -p'を使うと、すでに存在する場合はエラーを無視します。 – user562374

答えて

86

rm -rf /some/dirを使用しないのはなぜですか。ディレクトリが存在すれば削除され、それ以外の場合は何もしません。 $WORKING_DIRを想定し

+9

私は元の質問は意味することを意図したと思う:ファイル/ディレクトリが存在するかどうかだけを削除を実行して下さい。このコマンドは機能しても同様の結果が得られますが、コマンドを実行する前に実際にテストを行う方が意味があります。 –

+3

@AnkurChauhan +1、dirが存在しない場合は警告が出ます。 – inf3rno

+5

これは質問の答えではありません。 –

22

試してみてください。

bash -c '[ -d my_mystery_dirname ] && run_this_command' 

EDIT:あなたがリモートマシン上のbashを実行できる場合、これは....

に動作します

EDIT 2:bashでは、[ -d something ]は「something」という名前のディレクトリがあるかどうかをチェックし、存在する場合は成功コードを返し、ディレクトリです。 & &でコマンドを連結すると、最初のコマンドが成功した場合にのみ2番目のコマンドが実行されます。したがって、[ -d somedir ] && commandは、ディレクトリが存在する場合にのみコマンドを実行します。

+0

はい、あなたが望むものであることを確認するためにシェルで試してください。 – sinelaw

+0

まず、ローカルで動作しているかどうかを確認したいのですが、リモートからコマンドを送信できます。私は "/ test"ディレクトリの.. [-d/test] && mkdir/testをチェックするように言っていますか? – remo

+0

はい、試してみてください! – sinelaw

25

がディレクトリに設定されている...このワンライナーはそれを行う必要があります。

if [ -d "$WORKING_DIR" ]; then rm -Rf $WORKING_DIR; fi 

(そうでない場合は、ちょうどあなたのディレクトリに置き換える)

+3

これは本当の回答です。 – doublejosh

関連する問題