마지막 답변(im3r3k)에서 가져옴:전체 디렉토리 트리를 재귀적으로 파쇄하는 방법은 무엇입니까?
find
아래 설명된 대로 쉘 스크립트를 호출하는 명령을 얻으려고 합니다 .
내가 지금까지 시도한 것 :
find /home/shredtest/* -depth -exec /home/test.sh {}\;
/home/shredtest
내용을 파쇄하고 싶은 디렉터리는 어디에 있고( /home/shredtest
자체는 삭제하지 않음), /home/test.sh
실행하려는 스크립트는 어디에 있습니까 chmod +x /home/test.sh
?
위 명령은 find
다음을 반환합니다.
찾기: -exec CMD는 ';'으로 끝나야 합니다.
나는 또한 다음을 시도했습니다.
find /home/shredtest/* -depth -exec /home/test.sh "{}"\;
find /home/shredtest/* -depth -exec /home/test.sh {}\;
find /home/shredtest/* -depth -exec sh /home/test.sh "{}"\;
find /home/shredtest/* -depth -exec sh \/home\/test.sh {}\;
find /home/shredtest/* -depth -exec sh \/home\/test.sh "{}"\;
이들 모두 동일한 오류를 반환합니다.
그래서:
- 왜
-exec
세미콜론이 보이지 않나요? 분명 거기 있었다가 탈출한 걸로 봐서 다른 데 문제가 있는 게 틀림없어요. 나는 그것을 보지 못한다. - 나는 이것을 올바른 방향으로 진행하고 있습니까, 아니면 이것을 달성하는 더 좋은 방법이 있습니까?
답변1
;
별도의 인수 여야 합니다 find
.
find /home/shredtest/ -depth -exec /home/test.sh "{}" \;
( {}
와 사이의 공백 에 유의하십시오 \;
). 뒤쪽에 -exec
:
find에 대한 다음 인수는 모두 ";"로 구성된 인수가 나타날 때까지 명령에 대한 인수로 처리됩니다.
(에서man find
). 즉, 인수에는 다음이 포함되어야 합니다.완전히매개변수 목록을 중지합니다 ;
.
또한 "+"를 사용하여 여러 파일 매개변수를 한 번에 전달할 수도 있습니다. 이 매개변수도 자체 매개변수여야 합니다.
또한 in은 불필요 find /home/shredtest/*
합니다 *
. find
디렉토리 내용 자체는 *
쉘에 의해 탐색되고 확장됩니다(때때로 원하는 결과를 정확히 제공하지 못할 수도 있음).