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