2016-04-07 4 views
0

複数のディレクトリに存在するファイルを削除する必要があります。私は次のスニペットを試しました。unixのfindコマンドのステータスに基づいて、複数のディレクトリに存在するファイルを削除します。

ls $dir/"$input.xml" 2> /dev/null 
     var = `echo$?` 
     if [[ $var == 0 ]]; then 
      echo -e "\n Deleting...\n" 
      rm $dir/"$input.xml" 

失敗しました。

誰でも私に優れたソリューションを提案したり、ソリューションに合わせて上記のスニペットを変更できますか?

+0

あなたの質問は不明です。見つかった場合は削除し、そうでない場合は無視します。あなたのコメントでは、見つからなければエラーを投げる必要があると言います。 **あなたが望むものを**明確に**説明してください。 –

+0

例で 'ls'コマンドを使用していて、質問文で' find'コマンドを要求しています。最低でも詳細に説明してください。 –

答えて

0

複数のディレクトリにあるファイルがあれば削除してください。それ以外のファイルは無視してください。」を無視してください。これを行う、あなたは、単に$ dirを下のどこかにあるいくつかのファイルを削除すると仮定すると:

使用は、ファイルを検索するを見つけ、そしてxargsのにパイプがをRM:

find "$dir" -type f -name "*.xml" | xargs rm 

あなたのファイル名場合ファイルがない場合はRMエラーメッセージをSUPRESSするに

find "$dir" -type f -name "*.xml" -print0 | xargs -0 rm 

:その後、これを行うにスペースが含まれている可能性がある

find "$dir" -type f -name "*.xml" -print0 | xargs -0 rm 2>/dev/null 
+0

ファイルが見つかった場合は削除する必要があります。それが見つからない場合、私はエラーメッセージをスローする必要があります。このファイルは多くのディレクトリにあります –

0

あなたのコードは、この[挿入スペース]、これに代えて

`echo $?` 

を試してみて操作できるようにするには、

`echo$?` 
関連する問題