導航:首頁 > 程序命令 > cp命令實現

cp命令實現

發布時間:2022-05-14 08:58:30

❶ 如何用cp命令將data文件夾下的plain.txt文件復制到script

cp命令中使用-R標志。
如果源文件夾包含多個子文件夾,則需要在cp命令中使用-R標志。該-R代表遞歸的,這意味著在執行的命令的有效期為子目錄為好。
要將plain.txt文件遞歸復制到script目錄,請執行以下操作,cp-Rplain.txtscript復制多個目錄,您也可以使用cp命令將多個目錄復制到單個位置。您需要做的就是在默認cp命令中傳遞用空格字元分隔的文件夾名稱。

linux中cp命令如何用 C語言實現

1,首先需要了解cp的原理。

2,可以參考cp的源碼去了解其原理

3,cp命令的源碼可以在linux內核中找到。

4,或者下載busybox其中也會有cp的源碼

只有了解其原理之後才能談如何實現。參考代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>
#include<string.h>

#defineBUF_SIZE1024
#definePATH_LEN128

voidmy_err(char*err_string,intline)
{
fprintf(stderr,"line:%d",line);
perror(err_string);
exit(1);
}

void_data(constintfrd,constintfwd)
{
intread_len=0,write_len=0;
unsignedcharbuf[BUF_SIZE],*p_buf;

while((read_len=read(frd,buf,BUF_SIZE))){

if(-1==read_len){
my_err("Readerror",__LINE__);
}
elseif(read_len>0){//把讀取部分寫入目標文件
p_buf=buf;
while((write_len=write(fwd,p_buf,read_len))){
if(write_len==read_len){
break;
}
elseif(write_len>0){//只寫入部分
p_buf+=write_len;
read_len-=write_len;
}
elseif(-1==write_len){
my_err("Writeerror",__LINE__);
}
}
if(-1==write_len)break;
}
}
}

intmain(intargc,char**argv)
{

intfrd,fwd;//讀寫文件描述符
intlen=0;
char*pSrc,*pDes;//分別指向源文件路徑和目標文件路徑
structstatsrc_st,des_st;

if(argc<3){
printf("用法./MyCp<源文件路徑><目標文件路徑> ");
my_err("argumentserror",__LINE__);
}

frd=open(argv[1],O_RDONLY);
if(frd==-1){
my_err("Cannotopnefile",__LINE__);
}

if(fstat(frd,&src_st)==-1){
my_err("staterror",__LINE__);
}
/*檢查源文件路徑是否是目錄*/
if(S_ISDIR(src_st.st_mode)){
my_err("略過目錄",__LINE__);
}

pDes=argv[2];
stat(argv[2],&des_st);
if(S_ISDIR(des_st.st_mode)){//目標路徑是目錄,則使用源文件的文件名

len=strlen(argv[1]);
pSrc=argv[1]+(len-1);//指向最後一個字元
/*先找出源文件的文件名*/
while(pSrc>=argv[1]&&*pSrc!='/'){
pSrc--;
}
pSrc++;//指向源文件名

len=strlen(argv[2]);
//.表示復制到當前工作目錄
if(1==len&&'.'==*(argv[2])){
len=0;//沒有申請空間,後面就不用釋放
pDes=pSrc;
}
else{//復制到某目錄下,使用源文件名
pDes=(char*)malloc(sizeof(char)*PATH_LEN);
if(NULL==pDes){
my_err("mallocerror",__LINE__);
}

strcpy(pDes,argv[2]);

if(*(pDes+(len-1))!='/'){//目錄缺少最後的'/',則補上』/『
strcat(pDes,"/");
}
strcat(pDes+len,pSrc);
}
}

/*打開目標文件,使許可權與源文件相同*/
fwd=open(pDes,O_WRONLY|O_CREAT|O_TRUNC,src_st.st_mode);
if(fwd==-1){
my_err("Cannotcreatfile",__LINE__);
}
_data(frd,fwd);
//puts("endof");
if(len>0&&pDes!=NULL)
free(pDes);

close(frd);
close(fwd);

return0;
}

❸ linux的cp怎麼覆蓋

cp命令是我日常學習中經常會遇到的一個命令,下面這篇文章主要給大家介紹了關於Linux系統利用cp命令實現強制覆蓋功能的方法,並且給大家簡單的介紹了cp命令的基礎知識,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
前言
cp命令用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄。它可以將單個源文件復製成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時復制多個文件,當一次復制多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。
語法
cp(選項)(參數)
選項
-a:此參數的效果和同時指定"-dpR"參數相同;
-d:當復制符號連接時,把目標文件或目錄也建立為符號連接,並指向與源文件或目錄連接的原始文件或目錄;
-f:強行復制文件或目錄,不論目標文件或目錄是否已存在;
-i:覆蓋既有文件之前先詢問用戶;
-l:對源文件建立硬連接,而非復制文件;
-p:保留源文件或目錄的屬性;
-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一並處理;
-s:對源文件建立符號連接,而非復制文件;
-u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才復制文件;
-S:在備份文件時,用指定的後綴「SUFFIX」代替文件的默認後綴;
-b:覆蓋已存在的文件目標前將目標文件備份;
-v:詳細顯示命令執行的操作。
參數
源文件:制定源文件列表。默認情況下,cp命令不能復制目錄,如果要復制目錄,則必須使用-R選項;
目標文件:指定目標文件。當「源文件」為多個文件時,要求「目標文件」為指定的目錄。
利用cp命令實現強制覆蓋功能
我們平常在Linux中使用 cp 命令時,會發現將一個目錄中文件復制到另一個目錄具有相同文件名稱時,即使添加了 -rf 參數強制覆蓋復制時,系統仍然會提示讓你一個個的手工輸入 y 確認復制,所添加的rf參數是不起作用的。
原因:
cp命令被系統設置了別名,相當於cp=『cp -i' 。
查詢alias命令
[root@localhost sonarqube]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
通過上述輸出,可以看出,我們平時使用 cp 命令,雖然沒有添加任何參數 ,但系統默認會在我們使用 cp 命令時自動添加 -i 參數
-i, --interactive
prompt before overwrite
-i 即交互的縮寫方式,也就是在使用 cp 命令作文件覆蓋操作之前,系統會要求確認提示.這個本來是系統的一個保險措施.如果有很多文件要復制,覺得一個一個輸入y 確認麻煩的話,可以使用如下方法解決:
強制復制
建議大家使用方式一,因為取消別名的話很容易造成風險,萬一又忘記恢復別名,以後的復制都不會有提示信息。
有提示信息可以多一層保險嘛,是人都會有犯混的時候,給自己加一個保險,有保障呀.

❹ 在Linux 中怎樣使用cp命令合並目錄樹

怎樣將兩個布局相似的目錄樹合並成一個新的目錄樹?
在目錄a,b和c中有一些文件,tree命令的輸出將能更好的說明:
文件布局
1. 使用cp命令創建合並:
現在我們將這兩個目錄合並成一個名為"merged"新的目錄中.完成上述操作最簡單的方式就是遞歸復制目錄,如下圖所示:
遞歸復制完成新的合並
1.1 cp命令和替換帶來的問題:
這種方式所帶來的問題是該合並目錄中所創建的文件為原文件的副本,並非原文件本身.別急, (你可能正在問自己) 如果不是原文件又有什麼問題? 要回答你的問題,考慮下你有很多大文件的情況.那種情形下,復制所有的文件可能花費數小時。
現在讓我們回到剛那問題上,且嘗試使用mv命令而不是cp命令。
企圖使用mv命令進行合並操作
這些目錄不能被合並.因此我們不能像這樣使用mv命令去合並目錄. 現在你該怎樣將原文件保存到"merged"目錄中?

❺ 如何使用cp命令從windows拷貝文件到linux

1
首先,下載putty軟體,並可以在目錄中,找到pscp.exe文件,我們可以通過這個軟體實現windows和linux之間拷貝文件。
2
首先,將pscp.exe的路徑加入到系統環境變數path中,這樣我們就可以在windows的命令行下使用pscp命令了。
3
按下windows鍵+r,輸入cmd然後回車,既可進入命令行模式。
4
此時使用pscp命令既可以拷貝文件到遠端的linux系統中,或者從遠端的linux系統中拷貝文件到當前路徑,該命令使用方法類似於linux下的scp命令。
5
輸入正確的密碼,就可以完成拷貝了。

❻ C語言實現CP指令

用C實現的步驟是:
1、解析命令,就是提取出源路徑和目標路徑,以及文件名。
2、寫一個切換目錄的函數,比如chgdir(char *),路徑名字做參數。
3、執行切換目錄函數,正確執行後,在這個目錄下找到目標文件,定義一個緩沖區,把文件內容拷貝進去,找不到文件另作處理。
4、再調用2步驟中的目錄切換函數,在目標路徑下建立一個空文件並把緩沖區內容寫進去,保存。

❼ Linux cp命令怎麼使用

該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中,同MSDOS下的命令一樣,功能十分強大。

語法: cp [選項] 源文件或目錄 目標文件或目錄

說明:該命令把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中。

該命令的各選項含義如下:

- a 該選項通常在拷貝目錄時使用。它保留鏈接、文件屬性,並遞歸地拷貝目錄,其作用等於dpR選項的組合。

- d 拷貝時保留鏈接。

- f 刪除已經存在的目標文件而不提示。

- i 和f選項相反,在覆蓋目標文件之前將給出提示要求用戶確認。回答y時目標文件將被覆蓋,是互動式拷貝。

- p 此時cp除復制源文件的內容外,還將把其修改時間和訪問許可權也復制到新文件中。

- r 若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下所有的子目錄和文件。此時目標文件必須為一個目錄名。

- l 不作拷貝,只是鏈接文件。

需要說明的是,為防止用戶在不經意的情況下用cp命令破壞另一個文件,如用戶指定的目標文件名已存在,用cp命令拷貝文件後,這個文件就會被新源文件覆蓋,因此,建議用戶在使用cp命令拷貝文件時,最好使用i選項。

例子:
Cp -i file1 file2 (將文檔 file1 復製成 file2 . –i為提示確認。)

cp file1 dir1 將文檔 file1 復制到目錄 dir1 下,文件名仍為 file1.

cp /tmp/file1 . 將目錄 /tmp 下的文檔 file1復制到現行目錄下,檔名仍為 file1.

cp /tmp/file1 file2 將目錄 /tmp 下的文檔 file1現行目錄下,檔名為file2

cp -r dir1 dir2 (recursive ) 復制整個目錄.若目錄 dir2 不存在,則將目錄dir1,及其所有文檔和子目錄,復制到目錄 dir2 下,新目錄名稱為dir1.若目錄dir2不存在,則將dir1,及其所有文檔和子目錄,復制為目錄 dir2.

❽ 如何用cp 命令將一個文件夾的內容復制到另一個文件夾

cp命令
cp命令用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄。它可以將單個源文件復製成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時復制多個文件,當一次復制多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。

語法

cp(選項)(參數)

選項

-a:此參數的效果和同時指定"-dpR"參數相同; -d:當復制符號連接時,把目標文件或目錄也建立為符號連接,並指向與源文件或目錄連接的原始文件或目錄; -f:強行復制文件或目錄,不論目標文件或目錄是否已存在; -i:覆蓋既有文件之前先詢問用戶; -l:對源文件建立硬連接,而非復制文件; -p:保留源文件或目錄的屬性; -R/r:遞歸處理,將指定目錄下的所有文件與子目錄一並處理; -s:對源文件建立符號連接,而非復制文件; -u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才復制文件; -S:在備份文件時,用指定的後綴「SUFFIX」代替文件的默認後綴; -b:覆蓋已存在的文件目標前將目標文件備份; -v:詳細顯示命令執行的操作。

❾ 基於C語言的簡單cp命令實現

main函數的參數,就是命令執行時,傳給程序的參數,一般兩個,一個是整數,表示傳入參數的個數,一個是字元串數組,傳入的參數,都是字元串,命令行輸入時用空格分隔。
可以用system(ls)命令,生成目錄名稱,突出到文件,通過字元處理,查看文件屬性,對於目錄,執行下一級cp,對於一般文件,按二進制文件讀寫復制。

❿ linux cp命令一個目錄復制到另一個目錄

linux復制指定目錄下的全部文件到另一個目錄中
復制指定目錄下的全部文件到另一個目錄中
文件及目錄的復制是經常要用到的。linux下進行復制的命令為cp。
假設復制源目錄 為 dir1 ,目標目錄為dir2。怎樣才能將dir1下所有文件復制到dir2下了
如果dir2目錄不存在,則可以直接使用。《Linux就該這么學》
cp -r dir1 dir2
例:cp -r /data01/sinopec/pos/. /data01/sinopec/pos-pc/
即可。
如果dir2目錄已存在,則需要使用
cp -r dir1/. dir2
如果這時使用cp -r dir1 dir2,則也會將dir1目錄復制到dir2中,明顯不符合要求。
ps:dir1、dir2改成對應的目錄路徑即可。
cp -r /home/www/xxx/statics/. /home/www/statics

閱讀全文

與cp命令實現相關的資料

熱點內容
黑馬程序員培訓機構官網天津 瀏覽:904
mainjavasrc 瀏覽:58
如何買伺服器挖礦 瀏覽:292
php批量上傳文件夾 瀏覽:560
安卓固件怎麼更新 瀏覽:169
單片機代碼常式網站 瀏覽:923
UG編程如何多平面輪廓2D倒角 瀏覽:438
視頻壓縮漸變紋 瀏覽:852
什麼app能看財經新聞 瀏覽:40
數學奇跡神奇運演算法 瀏覽:360
大廠的程序員的水平如何 瀏覽:701
遺傳演算法入門經典書籍 瀏覽:879
源碼炮台腳本 瀏覽:621
在位編輯命令 瀏覽:348
曲式分析基礎教程pdf 瀏覽:15
php生成靜態html頁面 瀏覽:965
怎麼分割pdf 瀏覽:813
壓縮垃圾報警器 瀏覽:629
小公司一般都用什麼伺服器 瀏覽:968
java獲取時間gmt時間 瀏覽:821