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

관련 정보