rm -f의 대체 옵션 뭔가 이상한 일이 일어나고이

커맨드 라인을 실행하고 싶습니다 :

cd ~/www/tmp/; rm -P 2*

그러나 2로 시작하는 파일이 없으면 오류가 발생합니다.

-f그러나 내가 사용하고 싶다고 생각할 것입니다 .

-f      Attempt to remove the files without prompting for confirmation, regardless of the file's permissions.  If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error.

그리고 내가 뭔가 이상한 일이 일어나고이 있다면, 나는 중단 명령을 원합니다 permissions- 파일에 대한주의. ‘존재하지 않음’오류 만 억제하고 싶습니다.

‘rm errors’와 관련된 다른 질문을 살펴본 결과 두 가지가 관련이있는 것으로 나타났습니다.

파일 이름과 디렉토리를 삭제하십시오. 그러한 파일이나 디렉토리가 없습니다

그러나이 질문에 대한 답변으로 진행되는 모든 것을 이해하지 못하며 필요한지 모르겠습니다.

touch이 질문에 제안 해킹 :

파일이 누락 된 경우 rm이보고하지 않습니까?

성능에 영향을 미치지 않는다고 생각하기 때문에 실행 가능한 것 같습니다 (그러나 어떤 유형의 성능에 영향을 미치겠습니까?-즉, 이것은 합리적으로 확장 가능한 기술입니까?

if-then커맨드 라인 내에서 어떻게 할 것인지 잘 모르겠습니다 .

간단한 명령 행 cut-n-paste 정리를위한 다른 옵션이 있습니까?

겠습니까 find -delete내 경우에 더 잘 작동? 그렇다면 왜 그렇습니까?


문제의 오류 :

rm: 2*: No such file or directory


답변

단지 호출하려면 rm -P에 대한 기존의 이름이 디렉토리에있는 패턴과 일치하는 (그러나 아래) 일반 파일 :

find directory -maxdepth 1 -type f -name 'pattern' -exec rm -P {} +

예 :

find ~/www/tmp/ -maxdepth 1 -type f -name '2*' -exec rm -P {} +

비 디렉토리 만 일치 시키려면 ! -type d대신 사용하십시오 -type f. 차이점은 ! -type d더 광범위한 파일 형식 (심볼릭 링크, 명명 된 파이프, 소켓 등)에 해당한다는 것입니다.

찾은 파일에서 일부 조건에 대한 프롬프트가 표시되기 때문에 대신 작동 하지 않아야 합니다 .-delete-exec rmrm -f

제거 -maxdepth 1수 있도록 find반복적으로 하위 디렉터리의 모습을.