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 d
so 를 사용할 수도 있습니다 . 디렉토리가 뒤에 있으므로 정규식과 일치하지 않으므로 내 대안과 비슷한 작업을 수행할 수 있습니다 .find
*.swp
rm
ls -RF
/