Удалить пустые папки в r - PullRequest
       50

Удалить пустые папки в r

1 голос
/ 17 января 2020

У меня есть список заархивированных файлов с текстовыми файлами в каталоге, который содержит пустые папки между ними. Я хочу разархивировать файлы и после разархивирования хочу удалить пустые папки, если они есть. Нужна помощь в этом в R.

1 Ответ

3 голосов
/ 17 января 2020

Вы можете использовать list.files(include.dirs=TRUE), чтобы получить список файлов и каталогов, затем используйте file.info, чтобы проверить, является ли это каталогом. Поскольку file.info показывает 0 для размера, когда он является каталогом, вам нужно перечислить все файлы в каталоге и получить размер, чтобы проверить, пусто ли оно. Затем вы можете удалить каталог, если размер равен 0, используя unlink:

lapply(list.files(include.dirs=TRUE, full.names=TRUE), function(x) {
    fi <- file.info(x)
    if (fi$isdir) {
        f <- list.files(x, all.files=TRUE, recursive=TRUE, full.names=TRUE)
        sz <- sum(file.info(f)$size)

        #as precaution, print to make sure before using unlink(x, TRUE)
        if (sz==0L) print(x)   
    }
})
...