tl;dr : 복붙용 코드
# 사용자 질문:
# 폴더 이름이 markdown일 때 해당 파일들을 일괄 삭제하는 코드
# 답변:
# 숫자로만 된 .Rmd 파일을 삭제하는 사용자 함수
delete_numeric_rmd_files <- function(folder_path = ".") {
# .Rmd 파일 목록 수집
rmd_files <- list.files(path = folder_path, pattern = "\\.Rmd$", full.names = TRUE)
# 숫자로만 된 파일명 필터링
numeric_rmd_files <- rmd_files[grepl("^\\d+\\.Rmd$", basename(rmd_files))]
# 삭제할 파일이 없다면 종료
if (length(numeric_rmd_files) == 0) {
message("삭제할 숫자-only Rmd 파일이 없습니다.")
return(invisible(NULL))
}
# 삭제 전 사용자에게 확인 요청
cat("삭제할 파일 목록:\n")
print(basename(numeric_rmd_files))
confirm <- readline(prompt = "정말 삭제하시겠습니까? (y/n): ")
# y 또는 Y 입력 시 삭제 진행
if (tolower(confirm) == "y") {
deleted <- file.remove(numeric_rmd_files)
message("삭제 완료:")
print(basename(numeric_rmd_files[deleted]))
} else {
message("삭제가 취소되었습니다.")
}
}
# 사용 예시:
delete_numeric_rmd_files("markdown")
markdown 폴더에 .rmd 파일이 잔뜩 있는데, 숫자로만 이뤄진 파일들을 골라낸다면?
R Markdown 폴더에 .Rmd 파일이 많고, 그중 파일 이름이 숫자로만 이루어진 파일들만 골라내고 싶다면, 아래의 R 코드를 사용할 수 있습니다.
✅ R 코드 (숫자로만 된 파일명 골라내기)
# 필요한 폴더 경로 설정 (예: 현재 작업 디렉토리)
folder\_path <- "path/to/your/folder" # 예: "rmd\_files"
# 해당 폴더에서 .Rmd 파일만 리스트업
rmd\_files <- list.files(path = folder\_path, pattern = "\\.Rmd$", full.names = FALSE)
# 숫자로만 된 파일명만 필터링 (확장자 제외하고 확인)
numeric\_files <- rmd\_files\[grepl("^\\d+\\.Rmd$", rmd\_files)\]
# 결과 출력
print(numeric\_files)
🔍 설명
list.files(..., pattern = "\.Rmd$"): .Rmd로 끝나는 파일들만 가져옵니다.
grepl("^\d+\.Rmd$", ...): 파일명이 오직 숫자로만 이루어졌는지를 정규식으로 검사합니다.
^\d+ → 시작부터 숫자만 (\d+)
\.Rmd$ → .Rmd로 끝나는지 확인
full.names = FALSE이면 파일 이름만, TRUE로 바꾸면 전체 경로 포함입니다.
예시
폴더 안에 다음과 같은 파일이 있을 때:
123.Rmd
abc.Rmd
4567.Rmd
89a.Rmd
001.Rmd
summary.Rmd
위 코드를 실행하면 출력은:
[1] "123.Rmd" "4567.Rmd" "001.Rmd"
필요하면 해당 파일들을 복사하거나 이동하는 코드도 알려줄 수 있어요.
폴더 이름이 markdown일 때
해당 파일들을 일괄 삭제하는 코드
좋아요! 폴더 이름이 markdown이고, 그 안의 숫자로만 된 .Rmd 파일들을 일괄 삭제하고 싶다면 아래와 같은 R 코드를 사용하세요.
✅ 숫자-only .Rmd 파일 일괄 삭제 코드
# 폴더 경로 설정
folder\_path <- "markdown"
# .Rmd 파일 목록 가져오기
rmd\_files <- list.files(path = folder\_path, pattern = "\\.Rmd$", full.names = TRUE)
# 숫자로만 된 파일명만 필터링 (basename으로 파일명만 추출해서 확인)
numeric\_rmd\_files <- rmd\_files\[grepl("^\\d+\\.Rmd$", basename(rmd\_files))\]
# 삭제 실행
file.remove(numeric\_rmd\_files)
# 삭제한 파일 출력 (선택사항)
cat("삭제된 파일 목록:\\n")
print(basename(numeric\_rmd\_files))
🛑 주의사항
file.remove()는 실제 파일을 삭제합니다. 되돌릴 수 없습니다.
삭제 전에 print(basename(numeric_rmd_files))로 어떤 파일이 지워질지 꼭 확인하세요.
윈도우, macOS, 리눅스 모두에서 동작합니다.
필요하면 삭제 대신 휴지통으로 옮기는 방식이나, 백업을 남기는 방법도 알려드릴 수 있어요.
사용자 함수로 만들어줘
좋아요! 숫자로만 된 .Rmd 파일을 삭제하는 동작을 사용자 정의 함수로 만들면 재사용하기 편리하죠.
✅ 사용자 정의 함수: delete_numeric_rmd_files()
# .Rmd 파일 목록 수집
rmd\_files <- list.files(path = folder\_path, pattern = "\\.Rmd$", full.names = TRUE)
# 숫자로만 된 파일명 필터링
numeric\_rmd\_files <- rmd\_files\[grepl("^\\d+\\.Rmd$", basename(rmd\_files))\]
# 삭제 실행
deleted <- file.remove(numeric\_rmd\_files)
# 결과 메시지 출력
if (length(numeric\_rmd\_files) == 0) {
message("삭제할 숫자-only Rmd 파일이 없습니다.")
} else {
message("삭제된 파일 목록:")
print(basename(numeric\_rmd\_files\[deleted\]))
}
}
✅ 사용법
# 현재 작업 디렉토리에서 실행
delete\_numeric\_rmd\_files()
# 또는 "markdown" 폴더에서 실행
delete\_numeric\_rmd\_files("markdown")
📌 보충 팁
확실히 지우기 전 확인하고 싶다면 file.remove() 대신 print()만 하고 수동 확인도 가능합니다.
원한다면 삭제 전에 백업을 만드는 옵션을 함수에 추가할 수도 있어요.
필요하면 삭제 로그를 파일로 저장하거나, 백업 디렉토리를 자동 생성하도록 확장할 수도 있습니다. 원하시나요?
리스트 보여주고 컨펌하는 절차 추가
좋은 아이디어입니다! 실수로 파일을 삭제하는 걸 방지하기 위해 삭제 전 파일 리스트를 보여주고 사용자에게 확인을 받은 다음에만 삭제하도록 사용자 함수에 기능을 추가할 수 있습니다.
✅ 개선된 함수: 사용자 컨펌 포함
# .Rmd 파일 목록 수집
rmd\_files <- list.files(path = folder\_path, pattern = "\\.Rmd$", full.names = TRUE)
# 숫자로만 된 파일명 필터링
numeric\_rmd\_files <- rmd\_files\[grepl("^\\d+\\.Rmd$", basename(rmd\_files))\]
# 삭제할 파일이 없다면 종료
if (length(numeric\_rmd\_files) == 0) {
message("삭제할 숫자-only Rmd 파일이 없습니다.")
return(invisible(NULL))
}
# 삭제 전 사용자에게 확인 요청
cat("삭제할 파일 목록:\\n")
print(basename(numeric\_rmd\_files))
confirm <- readline(prompt = "정말 삭제하시겠습니까? (y/n): ")
# y 또는 Y 입력 시 삭제 진행
if (tolower(confirm) == "y") {
deleted <- file.remove(numeric\_rmd\_files)
message("삭제 완료:")
print(basename(numeric\_rmd\_files\[deleted\]))
} else {
message("삭제가 취소되었습니다.")
}
}
✅ 사용 예시delete_numeric_rmd_files("markdown")
실행하면 예를 들어 다음과 같이 출력됩니다:
[1] "001.Rmd" "123.Rmd" "4567.Rmd"
정말 삭제하시겠습니까? (y/n):
y 또는 Y 입력 시 → 삭제
그 외 입력 시 → 삭제 취소
필요하다면 다음 단계로는:
yes 입력 확인 강화 (yes, YES, y, Y 등 허용)
file.remove() 대신 file.rename()으로 백업
삭제 로그 파일로 저장
같은 것도 쉽게 추가 가능합니다.
'Tech : 데이터 분석 > by ChatGPT' 카테고리의 다른 글
[Bash셸] Docker 컨테이너 임시 파일 정리 스크립트 🛠️ (0) | 2025.04.03 |
---|---|
(~3/2) 2025 서울리빙디자인페어: 리빙 디자인의 미래를 만나다 (0) | 2025.02.28 |
[2025-02-25] 한국은행 기준금리 0.25%p 인하 연 2.75%로 조정 (0) | 2025.02.26 |
[2025-02-05] "서울시의회, 상업·준주거지역 내 비주거시설 비율 완화 추진" 뉴스 분석 (0) | 2025.02.26 |
[Go언어] 맥용으로 빌드한 앱에서 "bad CPU type" 오류 발생 시 해결 방법 (0) | 2025.02.18 |
댓글