커맨드 라인을 실행하고 싶습니다 :
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
이 질문에 제안 해킹 :
성능에 영향을 미치지 않는다고 생각하기 때문에 실행 가능한 것 같습니다 (그러나 어떤 유형의 성능에 영향을 미치겠습니까?-즉, 이것은 합리적으로 확장 가능한 기술입니까?
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 rm
rm -f
제거 -maxdepth 1
수 있도록 find
반복적으로 하위 디렉터리의 모습을.