OSZICARというファイルが含まれていないディレクトリを見つけて、そのディレクトリにcdして追加の作業を実行します。

OSZICARというファイルが含まれていないディレクトリを見つけて、そのディレクトリにcdして追加の作業を実行します。

OSZICARというファイルが含まれていないディレクトリを見つけて、そのディレクトリにcdして追加の操作を実行したいと思います。

私が今持っているものは次のとおりです。

find `pwd` -mindepth 2 -maxdepth 2 -type d -exec sh -c "echo {}; cd {}; ls; if [! -f $0/OSZICAR];echo "doing my thing";fi" \;

しかし、エラーが発生しました。誰でも助けることができますか?ありがとう

私の初期コマンド(「OSZICARなし」基準を除く)は次のとおりです。

find `pwd` -mindepth 2 -maxdepth 2 -type d -exec sh -c "echo {}; cd {}; ls; cp ../../submit_script_Stampede.sh .; ls;sed -i s/Monkhorst/Gamma/ KPOINTS; cp CONTCAR POSCAR ;sbatch submit_script_Stampede.sh" \; 

答え1

for dir in $(find ${PWD} -mindepth 2 -maxdepth 2 -type d)
do
  cd ${dir}
  ls OSZICAR > /dev/null 2>&1; r=${?}
  if [ ${r} -ne 0 ]
  then 
    # do your thing here
  fi
done

答え2

[とが空白で区切られていることを確認し、]コマンドパラメータの周りの「を削除するか」を「\」に置き換えますecho。{}は別のパラメータでなければなりません。

したがって、修正されたコマンドは次のようになります。

find `pwd` -mindepth 2 -maxdepth 2 -type d -exec sh -c 'echo $1; cd $1; ls; if [ ! -f OSZICAR ];then echo "doing my thing";fi' dummy {} \;

関連情報