rm -f의 대안

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.

그리고 나하다파일 권한에 주의하세요. 이상한 일이 발생하면 중단하는 명령을 선호합니다. 나는 단지 "존재하지 않음" 오류를 억제하고 싶습니다.

"rm 오류"에 대한 다른 질문을 살펴본 결과 이 ​​두 가지가 (다소) 관련이 있는 것으로 나타났습니다.

파일과 디렉터리를 이름별로 삭제합니다. 해당 파일이나 디렉터리가 없습니다.

그런데 이 질문에 대한 답변이 무슨 내용인지 이해가 안 되고, 필요한지 모르겠네요?

touch이 질문에 제안된 해킹:

파일이 손실되면 rm이 보고하지 않나요?

성능 저하에 신경 쓰지 않기 때문에 효과가 있는 것 같습니다. (하지만 어떤 유형의 성능 저하를 받아들이시겠습니까? - 즉, 이것은 상당히 확장 가능한 기술입니까, 아니면 단지 매우 나쁜 습관을 배우고 있는 것입니까?)

if-then명령줄에서 이 작업을 수행하는 방법을 잘 모르겠습니다 .

간단한 명령줄 잘라내기-붙여넣기 정리를 위한 다른 옵션이 있습니까?

find -delete내 상황에 더 적합 할까요 ? 그렇다면 왜 그렇습니까?


문제가 있는 오류:

rm: 2*: No such file or directory

답변1

단지 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.

관련 정보