find 없이 rm `find lib/ -name *.swp`와 동등한 것은 무엇입니까?

find 없이 rm `find lib/ -name *.swp`와 동등한 것은 무엇입니까?

lib마지막에 디렉토리의 모든 파일을 삭제하고 싶습니다 ..swp

다음 없이 어떻게 이 작업을 수행할 수 있습니까 find?

rm `find lib/ -name *.swp`

답변1

조회의 좋은 점은 재귀적이라는 것입니다. 일부 최신 셸은 검색 재귀를 제공하지만 POSIX와 호환되지 않으므로 모든 곳에서 작동한다고 의존할 수는 없습니다. 다음은 bash 4.0 이상에서 실행되는 예입니다.

shopt -s globstar
for f in **/*.swp; do
    rm -- "$f"
done

이미 가지고 있는 find 명령의 경우 공백이 포함된 모든 파일(예: 공백)이 삭제됩니다. 다음은 고정된 예입니다.

find lib/ -name '*.swp' -exec rm {} +

일부 버전의 경우 다음을 find사용할 수 있습니다 -delete.

find lib/ -name '*.swp' -delete

답변2

cd lib && ls -R  | grep '\.swp$' | xargs -d '\n' rm

원본의 경우 다음과 같이 합니다.

find lib -name '*.swp' | xargs -d '\n' rm

find결과가 반환되지 않으면 오류가 발생하지 않기 때문입니다 .

호출되는 디렉터리는 삭제할 수 없으므로 반환 하지 않으려면 \! -type dso 를 사용할 수도 있습니다 . 디렉토리가 뒤에 있으므로 정규식과 일치하지 않으므로 내 대안과 비슷한 작업을 수행할 수 있습니다 .find*.swprmls -RF/

관련 정보