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
Eu gostaria de encontrar diretórios que não contenham um arquivo com o nome OSZICAR e, em seguida, cd no diretório e fazer algo mais ...
tudo que eu tenho agora é:
find 'pwd' -mindepth 2 -maxdepth 2 -type d -exec sh -c "echo {}; cd {}; ls; if [! -f $0/OSZICAR];echo "doing my thing";fi" \;
mas há erro, alguém poderia ajudar? Obrigado
Meu comando original sem os Critérios de não ter 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" \;
Verifique se [
e ]
estão separados por espaço e remova o "em torno do argumento para o comando echo
ou substitua os" por \ ". Observe também que {} deve ser um argumento separado. / p>
Assim, um comando corrigido seria:
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 {} \;
Tags find