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 {} \;