답변:
find 명령 줄은 다양한 종류의 옵션으로 만들어지며, 이들은 식을 구성하기 위해 결합됩니다.
find
옵션은 -delete
액션이다.
이는 지금까지 일치하는 각 파일에 대해 실행됨을 의미합니다.
경로 다음의 첫 번째 옵션으로 모든 파일이 일치합니다 ... 죄송합니다!
위험하지만 맨 페이지에는 적어도 큰 경고가 있습니다 .
보낸 사람 man find
:
ACTIONS
-delete
Delete files; true if removal succeeded. If the removal failed, an
error message is issued. If -delete fails, find's exit status will
be nonzero (when it eventually exits). Use of -delete automatically
turns on the -depth option.
Warnings: Don't forget that the find command line is evaluated as an
expression, so putting -delete first will make find try to delete
everything below the starting points you specified. When testing a
find command line that you later intend to use with -delete, you
should explicitly specify -depth in order to avoid later surprises.
Because -delete implies -depth, you cannot usefully use -prune and
-delete together.
추가로 man find
:
EXPRESSIONS
The expression is made up of options (which affect overall operation rather
than the processing of a specific file, and always return true), tests
(which return a true or false value), and actions (which have side effects
and return a true or false value), all separated by operators. -and is
assumed where the operator is omitted.
If the expression contains no actions other than -prune, -print is per‐
formed on all files for which the expression is true.
find
명령이 수행 할 작업을 시도 할 때 :
명령이 어떤지 보려면
find . -name '*ar' -delete
먼저 작업을 대체 할 수있는, 삭제됩니다 -delete
더 무해한 작용에 의해 - 같은 -fls
또는 -print
:
find . -name '*ar' -print
작업에 영향을받는 파일을 인쇄합니다.
이 예에서는 -print를 생략 할 수 있습니다. 이 경우 전혀 동작이 없으므로 가장 명백한 내용은 암시 적으로 추가됩니다 -print
. (위에서 인용 한 "EXPRESSIONS"섹션의 두 번째 단락 참조)
-delete
플래그를 추가하는 것이 너무 간단 해 보였습니다 :-) 그러나 누군가가 find . -delete
아닌 다른 이유 가 rm -rf .
있습니까? 아니면 find
그 주장을 파싱하고 처리 하는 방식 입니까?
warning: use -depth when testing stuff you later want to -delete
에 실제 사이드 예제에서 수행하지 않은 내용이 나와 있지 않습니까?
-n
옵션 처럼 -delete 대신에 인쇄의 사용을 설명하려고했다 . 물론 첫 번째 명령은 전혀 실용적이지 않아야합니다. 갈 게요
에서 find
인수 순서는, 많은 문제.
인수는 옵션, 테스트 및 조치 일 수 있습니다. 일반적으로 옵션을 먼저 사용한 다음 테스트 한 다음 작업을 수행해야합니다.
때로는 find
잘못된 순서에 대해 경고하는 경우 도 있지만 (예 : -maxdepth
다른 인수 후에 사용하는 경우 ) 그렇지 않은 것 같습니다.
무엇입니까 find . -delete -name '*ar'
:
아마도 당신이하고 싶은 것은 :
find -name '*ar' -delete
모든 파일에 대해 일치 '*ar'
하는지 확인하고 조건을 만족하는 경우에만 파일을 삭제합니다.
너무 늦었다면 죄송합니다.