用R語言批量處理檔案資料夾和檔案

2021-10-03 08:21:35 字數 2307 閱讀 3514

有時候,我們需要從一系列資料夾裡提取一系列檔案,比如pdf檔案。再者,我們可能還需要對這些檔案做一些處理,比如合併。那麼就可以利用r語言來處理。一般來說,perl語言更適用於檔案或文字的處理。不過,因perl語言很久沒用,生疏了。

r語言自帶的一系列函式處理如下:

file.

remove

(...

) # 用於檔案刪除

file.

rename

(from

, to) # 重新命名

file.

(file1, file2) #合併檔案

file.

copy

(from

, to, overwrite = recursive, recursive =

false

, copy.mode =

true

, copy.date =

false

) # 檔案複製

list.

files

() # 羅列資料夾或工作目錄裡的所有檔名

dir(

) # 羅列檔名,同上

dir.

create

() # 建立資料夾

unlink

(x, recursive =

false

, force =

false

) # 刪除資料夾

資料夾new1裡有一系列子資料夾,通過下述**可以對它們重新命名:

myfolderpath <

-"d:/myworks/new1"

setwd

(myfolderpath)

allfoldn <

-dir

(myfolderpath)

foldnewn <

-paste0

('nf',1

:length

(allfoldn)

)file.

rename

(allfoldn,foldnewn)

通過上述**,子資料夾會以『nf1』,『nf2』,…的方式重新命名。

通過下述**可以把子資料夾裡的所有檔案合併到每個子資料夾的第乙個檔案:

myfolderpath <

-"d:/myworks/new1"

setwd

(myfolderpath)

allfoldn <

-dir

(myfolderpath)

for(i in1:

length

(allfoldn)

)}

如果想刪除某些特定檔案,可以使用下述**:

file.

remove

(dir

("."

, pattern=

"(.m3u8)$"

))

如果想刪除所有子資料夾,可以使用下述**:

setwd

(myfolderpath)

for(i in1:

length

(allfoldn)

)unlink

(allfoldn[i]

,recursive =

t, force=

true

)

如果子資料夾數量比較多時,可以使用並行命令來節省時間,將上述合併的for迴圈改為函式ref,然後來執行並行命令:

ref<

-function

(allfoldn)

}

並行命令的**如下:

myfolderpath <

-"d:/myworks/new1"

setwd

(myfolderpath)

allfoldn <

-dir

(myfolderpath)

library

(doparallel)

cl <

-makepsockcluster

(detectcores()

-1)registerdoparallel

(cl)

foreach

(allfoldn=allfoldn)

%dopar%

ref(allfoldn)

stopcluster

(cl)

再次證實,學會一定的程式設計能力,可以達到事半功倍。

git 批量刪除資料夾和檔案

本地刪除檔案後,執行 git status 然後接著 git rm 檔案 此時如果是要刪除大批量檔案,這麼乙個乙個命令下去不得累死人啊 其實可以這樣 不管之前有沒有已經本地物理刪除 執行 git rm r 記得,cd 到你要刪除的目錄下。當然 可以換成指定目錄 這時刪除檔案已經進入本地快取區,接下來...

C 檔案和資料夾

獲取啟動了應用程式的可執行檔案的路徑,不包括可執行檔案的名稱。返回上一級路徑 是你返回的資料夾級數 string parentpath di.fullname 判斷檔案是否存在 if system.io.file.exists parentpath directory.exists path pat...

刪除檔案和資料夾

一 刪除檔案 使用 del 命令,可以檢視幫助資訊 del p f s q a attributes names erase p f s q a attributes names names 指定乙個或數個檔案或目錄列表。萬用字元可被用來 刪除多個檔案。如果指定了乙個目錄,目錄中的所 有檔案都會被刪...