본문 바로가기
소프트웨어 사용&설치 등/리눅스 Linux

[리눅스] 특정 폴더 내에서 특정 파일 제외하고 삭제하기

by 언제나초심. 2022. 7. 22.
반응형

특정 폴더 내에서 특정 파일 제외하고 삭제하기

find . -type f -path '*i18n*/*.json' -not \( -name 'en.json' -or -name 'ko.json' \) -delete

유추하던 과정...

# 특정 폴더명 재귀 탐색
find . -name "i18n*"

# i18n 이하의 json 파일 탐색
find . -type f -path '*i18n*/*' -name '*.json'
find . -type f -path '*i18n*/*.json'

# i18n 이하의 json 파일 중에서 en.json, ko.json, qqq.json 이 아닌 것만 골라내기
find . -type f -path '*i18n*/*.json' -not \( -name 'en.json' -or -name 'ko.json' \)

# i18n 이하의 json 파일 중에서 en.json, ko.json, qqq.json 이 아닌 것만 골라내서 삭제
find . -type f -path '*i18n*/*.json' -not \( -name 'en.json' -or -name 'ko.json' \) -delete

참조 링크

아래는 여러가지 방법들 메모

파일 제외한 단순 삭제

# 파일 하나만 제외
$ rm -v !("filename")

# 파일 2개 이상 제외할 때 예시
$ rm -v !("filename1"|"filename2") 

참조 링크

bash에서 shopt 사용시

# extend glob 활성화
shopt -s extglob
rm !("en.json"|"ko.json") 2> /dev/null

cd exif
rm !("en.json"|"ko.json") 2> /dev/null

# extend glob 비활성화
shopt -u extglob

참조 링크

find와 xargs

find / -type f -name '*.txt' | xargs rm

find / -type f -name '*.txt' -exec rm -f {} \;

참조 링크

폴더를 탐색하는 경우

find . -name "foo*"

참조 링크

반응형