導航:首頁 > 程序命令 > unix命令rename

unix命令rename

發布時間:2025-01-21 00:55:57

linux重命名文件

Linux重命名文件是rename。

Linux中rename和mv都可以對文件重命名,在此對rename命令和mv命令在重命名文件方面做一個比較。

可以看到mv命令確實有重命名的功能,但是實際應用中,它只能對單個文件重命名,rename命令是專用於文件重命名的,rename除了給單個文件重命名,還可以批量文件重命名。

Linux的rename命令有兩個版本,一個是C語言版本的,一個是Perl語言版本的。

早期的Linux發行版基本上使用的是C語言版本的,現在已經很難見到C語言版本的了,由於歷史原因,在Perl語言大紅大紫的時候,Linux的工具開發者們信仰Perl能取代C,所以大部分工具原來是C版本的都被Perl改寫了,因為Perl版本的支持正則處理,所以功能更加強大,已經不再需要C語言版本的了。

Linux系統的發展歷程:

Linux操作系統的誕生、發展和成長過程始終依賴著五個重要支柱:Unix操作系統、MINIX操作系統、GNU計劃、POSIX標准和Internet網路。

20世紀80年代,計算機硬體的性能不斷提高,PC的市場不斷擴大,當時可供計算機選用的操作系統主要有Unix、DOS和MacOS這幾種。Unix價格昂貴,不能運行於PC;DOS顯得簡陋,且源代碼被軟體廠商嚴格保密;MacOS是一種專門用於蘋果計算機的操作系統。

此時,計算機科學領域迫切需要一個更加完善、強大、廉價和完全開放的操作系統。

在吸收了MINIX精華的基礎上,Linus於1991年寫出了屬於自己的Linux操作系統,版本為Linux0.01,是Linux時代開始的標志。他利用Unix的核心,去除繁雜的核心程序,改寫成適用於一般計算機的x86系統,並放在網路上供大家下載,1994年推出完整的核心Version1.0。

❷ Unix文件系統和pwd命令實現詳解

1. 對於用戶來講Unix系統中硬碟上的文件組成一棵目錄樹。每個目錄能包含文件和其他子目錄。

目錄樹的深度幾乎沒有限制,當然如果你所創建的目錄樹太深,系統就會提醒超過范圍,並停止執行,以下腳本經測試有效

while true

do

mkdir deep_well

cd deep_well

done

我運行了幾秒後,中斷系統提示超過目錄樹范圍。

2. 一個磁碟可以劃分為N多扇區,每個扇區有512位元組 。扇區是磁碟上的基本存儲單元,我們可以將每個扇區進行編號,這樣磁碟就變為

一系列編了號的塊的組合。

3. 磁碟塊上存儲文件時,按照一定的規律。

每個文件系統分為3部分:超級塊,i-節點表,數據區 。

超級塊 :存放文件系統本身的信息,比如記錄了每個區域的大小,或未被使用的磁碟塊的信息。(不同版本稍有差別)

i-節點表 :每個文件都有其屬性,大小,最近修改時間等等,這些被存儲在ino_t 的結構體中,所有的i-節點都有一樣的大小,i-節點表就是這樣一些節點的列表。

(表中的每個i-節點都通過位置來標志,例如標志為2的i-節點位於文件系統i-節點表中的第3個位置 )

數據塊 :存放文件內容,因為塊的大小一定,所以有時一個文件會分布在多個磁碟上。

4. 創建一個文件的4個步驟:

存儲屬性:內核先找到一個空的i-節點,把文件的屬性信息填入其中;

存儲數據:從磁碟上找出空閑塊,把文件數據復制進去;

記錄分配情況:內核在i-節點的磁碟分布區記錄了剛剛的磁碟編號

添加文件名到目錄:將(i-節點號,文件名)添加到目錄。

5. cat,more等一些命令的實現思想:

cat name

在目錄中尋找文件名,

定位到相應文件名的i-節點號;

根據i-節點號裡面獲得文件屬性,查看許可權,若許可權不夠則open()函數返回1,打開失敗,停止;

根據i-節點裡面磁碟位置訪問文件位置的數據塊

一遍遍調用read讀取數據(可以存放到緩沖區)

6. 大文件的存儲

如果一個文件需要14個編號的磁碟塊來存儲,但是i-節點值包含13個項的分配鏈表,這時候,我們可以將前10個放到i-節點里,其他4個放到一個數據塊裡面,在i-節點的第

11位寫上指向存那4個編號的塊。則我們實際用了10+4+1個數據塊,那個多出來的叫:間接塊 。

同理,間接塊飽和時,我們可以設置二級間接塊,,,

7. 文件在目錄中的含義

目錄包含(i-節點號,文件名)的入口,即目錄包含的是文件的引用,每個應用稱為鏈接。

8. 目錄包含子目錄的含義

目錄包含指向子目錄i-節點的鏈接。

9. 目錄有個父目錄的含義:

目錄包含..的鏈接,即指向父目錄。

10. 文件沒有名字只有i-節點號,但是鏈接可以有名字 ,一個文件可以有多個鏈接(他們的名字也可以不同,但是他們指向一個文件,對他們的操作就是對源文件的操作)

11. Unix系統可以包含多個文件系統,每個文件系統都是一棵獨立的樹,都有根目錄,但是系統可以將他們整合成一棵大樹,即一個樹的根裝載到另一個數的某個節點上。mount

12 符號鏈接通過文件名引用文件,可以跨越文件系統,也可以指向目錄。相當於windows中快捷方式。

硬鏈接是將目錄鏈接到樹的指針,同時也是將文件名和文件本身鏈接起來的指針。通過對i-節點號引用文件。

13 .與目錄樹相關的命令和系統調用

命令 mkdir

實現 頭文件 #include sys/stat.h #include sys/types.h

函數原型 int res=mkdir (char *path,mode_t mode);

命令 rmdir 刪除一個目錄,這個目錄必須是空的

實現 頭文件#include unistd.h

函數原型int res=rmdir (const char* path);

命令 rm 減少相應i-節點連接數,若此時節點書減為0,就釋放數據塊和節點。不能用來刪除目錄

實現 頭文件#include unistd.h

函數原型int res=unlink (const char *path);

命令 ln 不能用來生成目錄的鏈接。

實現 頭文件#include unistd.h

函數原型 int res=link (const char *old,const char *new);

命令 mv 刪除原來的目錄,復制到新的裡面

實現 頭文件#include unistd.h

函數原型int res=rename (const char* from,const char *to);

原理:復制鏈接到新的名字/位置再刪除原來的鏈接

if(link(x,z)!=-1)

unlink(x);

命令 cd 對進程有影響,對目錄本身沒有影響

實現 頭文件 #include unistd.h

函數原型 int res=chdir (const char *path);

14. pwd 命令的實現

#include stdio.h

#include sys/types.h

#include sys/stat.h

#include dirent.h

#include string.h

#include unistd.h

ino_t get_inode(char *);//get the inode number

void printpathto(ino_t);

void inum_to_name(ino_t,char *,int);//get the node name by its inode number

int main()

{

printpathto(get_inode(.));

putchar(' ');

return 0;

}

void printpathto(ino_t this_inode)

{

ino_t my_inode;

char its_name[BUFSIZ];

if(get_inode(..)!=this_inode)

{

chdir(..); //up one dir

inum_to_name(this_inode,its_name,BUFSIZ); //get its name

my_inode=get_inode(.);

printpathto(my_inode); //itorater

printf(/%s,its_name);

}

}

void inum_to_name(ino_t inode_to_find,char *namebuf,int buflen)

{

DIR *dir_ptr; //the directory

struct dirent *direntp; //each entry

dir_ptr=opendir(.);

if(dir_ptr==NULL)

{

perror(.);

return;

}

while((direntp=readdir(dir_ptr))!=NULL)

{

if(direntp-d_ino==inode_to_find)

{

strncpy(namebuf,direntp-d_name,buflen);

namebuf[buflen-1]=''

closedir(dir_ptr);

return;

}

}

fprintf(stderr,error looking for inum %d ,(int)inode_to_find);

return;

}

ino_t get_inode(char *fname)

{

struct stat info;

if(stat(fname,info)==-1)

{

fprintf(stderr,Can not stat);

perror(fname);

return 1;

}

return info.st_ino;

}

運行結果:

caoli@caoli-laptop:~/workspace/test$ ./pwd1

/home/caoli/workspace/test

caoli@caoli-laptop:~/workspace/test$

❸ 如何用Unix Shell命令批量給文件重命名

兩種方法:
1)比較基本的方法:在循環中用 rename 或 mv 命令。
2)用 awk 組織 mv 命令,最後執行。

請先參考我的另一個回答(方法二):
http://..com/question/207225444.html?an=0&si=2
再有問題可以追問,或直接網路hi我。

❹ linux系統常用操作命令

linux系統常用操作命令如下:

ls:全拼list,功能是列出目錄的內容及其內容屬性信息。

cd:全拼change directory,功能是從當前工作目錄切換到指定的工作目錄。

cp:全拼,其功能為復制文件或目錄。

find:查找的意思,用於查找目錄及目錄下的文件。

mkdir:全拼make directories,其功能是創建目錄。

mv:全拼move,其功能是移動或重命名文件。

pwd:全拼print working directory,其功能是顯示當前工作目錄的絕對路徑。

rename:用於重命名文件。

rm:全拼remove,其功能是刪除一個或多個文件或目錄。

linux系統的優勢

由於Linux 的內核大部分是用 C 語言編寫的,並採用了可移植的Unix標准應用程序介面,所以它支持侍氏如i386、Alpha、AMD和Sparc等系統平台,老亮散以及從個人電腦到大型主機,甚至包鍵逗括嵌入式系統在內的各種硬體設備。

與其他的操作系統不同的是,安裝了Linux系統後,用戶常用的一些辦公軟體、圖形處理工具、多媒體播放軟體和網路工具等都已無需安裝。而對於程序開發人員來說,Linux更是一個很好的操作平台,在Linux 的軟體包中,包含了多種程序語言與開發工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。

❺ linux文件夾重命名命令linux文件夾重命名

linux下怎麼給u盤和移動硬碟重命名?

1、在插入U盤或硬碟之前,在命令行窗口運行:fdisk-l命令,系統將顯示目前所能識別到的硬體存儲設備;內容如:sdasda1sda2sdbsdb1sdb2等信息,其中,sda與sdb表示目前系統有兩個硬碟,後面帶有數字表示各個硬碟下的各區目錄;硬碟或存儲設備一般都是以sd開頭。2、插入U盤或硬碟,再次運行fdisk-l命令,系統將再次顯示目前所能識別到的硬體存儲設備,比較兩次輸出的不各,將發現第二次運行時會增加一些內容。系統將在原來的基礎上增加顯示:sdc,等內容,表示新插入的U盤或移動硬碟是掛靠在系統的sdc下。3、運行mount,如:#mkdir/mnt/usb#mount/dev/sdc/mnt/usb4、運行完畢,可以直接在/mnt/usb目錄下對U盤或移動硬碟的數據進行訪問或操作。5、想斷開U盤或移動硬碟之前,運行umount命令,保證數據不會造成丟失,命令如下:

Linux下以當前日期重命名文件?

mvyourfile`date"+%Y-%m-%d~%H-%M-%S"`

LinuxUnix命令重新命名文件?

編寫腳本rename.sh,內容如下

foriin$(ls)

do

newname=$(echo$i|sed-e's//-/g')

echo"mv$i$newname"

mv$i$newname

done

解釋newname=$(echo$i|sed-e's//-/g'),就是把文件命中不是字母的通通換為-

增加rename.sh的可執行許可權

chmod+xrename.sh

執行

./rename.sh

GOODLUCK!!

linux下怎麼給目錄改名?

1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。

2、其次,在linux命令行中輸入:mvreadme.txtreadme.doc。

3、最後,按下回車鍵執行shell指令,此時會看到readme.txt被成功重命名為readme.doc了。

linux下對文件重命名是什麼命令?

linux的文件重命名非常簡單。常用的是mv命令和rename命令。下面介紹一下這兩個命令的用法,具體結節可以參考手冊。

1、mvmvfromfiletofile如把文件a.txt得命名為b.txt,可以是mva.txtb.txt。mv一次只能重命名一個文件,而且,它是移動命令。如果tofile已經存在的話,會直接裝原文件覆蓋,從而造成文件的丟失。當然有選項可以對已存在的文件進行提示,但是,我表示,那個選項我還真不常用。綜合這兩點考慮,還是決定看看rename吧。

2、或者rename's/frompart/topart/'filename如把文件a.txt得命名為b.txt,可以是rename'a''b'a.txt(這個沒有試過,看網上別人說的,是這樣子的。)還可以是:rename's/^a/b/'a.txt在有的系統之上,用前面的那句可以通過,在有的系統之上,用後面的這個可以通過。兩個不一樣,一個是C的,一個是perl的。明顯看出,後面這條是正則表達式的寫法。具體採用哪一種方式,可以manrename,在手冊頁的最後一行看版本。由於我使用的系統rename的版本是Perl的,所以我只能採用後面的這一種方式。rename強大的地方在於,你可以使用*,?等,對所有符合條件的文件名進行批量修改。而你在使用mv的時候,只能採用寫腳本,用循環的方式來解決。

❻ C語言中 rename 的用法

rename函數功能是給一個文件重命名,用該函數可以實現文件移動功能,把一個文件的完整路徑的盤符改一下就實現了這個文件的移動。具體參見下面的程序示例說明。
頭文件:在Visual
C++6.0中用stdio.h或者io.h

法:
int
rename(char
*oldname,
char
*newname);
程序例:
#include
int
main(void)
{
char
oldname[80],
newname[80];
/*
prompt
for
file
to
rename
and
new
name
*/
printf("File
to
rename:
");
gets(oldname);
printf("New
name:
");
gets(newname);
/*
Rename
the
file
*/
if
(rename(oldname,
newname)
==
0)
printf("Renamed
%s
to
%s.\n",
oldname,
newname);
else
perror("rename");
return
0;
}
執行過程:
File
to
rename:
D:\\in.dat
New
name:
G:\\in.dat
Renamed
D:\\in.dat
to
G:\\in.dat.
這樣就實現了in.dat從D盤移動到G盤。
在unix或linux系統中:
#include
int
rename(const
char
*oldname,
const
char
*newname);
函數說明
(1)
如果oldname為一個文件而不是目錄,那麼為該文件更名。在這種情況下,如果newname作為一個目錄已存在,則它不能重命名一個目錄。如果newname已存在,而且不是一個目錄,則先將其刪除然後將oldname更名為newname。對oldname所在目錄以及newname所在的目錄,調用進程必須具有寫許可權,因為將更改這兩個目錄。
(2)
如若oldname為一個目錄,那麼為該目錄更名。如果newname已存在,則它必須是一個目錄,而且該目錄應當是空目錄(空目錄指的是該目錄中只有.
和..
項)。如果newname存在(而且是一個空目錄),則先將其刪除,然後將oldname更名為newname。另外,當為一個目錄更名時,newname不能包含oldname作為其路徑前綴。例如,不能將/usr更名為/usr/foo/testdir,因為老名字(
/usr/foo)是新名字的路徑前綴,因而不能將其刪除。
(3)
作為一個特例,如果oldname和newname引用同一文件,則函數不做任何更改而成功返回。
返回值
執行成功則返回0,失敗返回-1,錯誤原因存於errno
範例
#include
int
main(int
argc,char
**argv)
{
if(argc
<
3)
{
printf("Usage:
%s
old_name
new_name\n",argv[0]);
return
-1;
}
printf("%s
=>
%s\n",
argv[1],
argv[2]);
if(rename(argv[1],
argv[2])
<
0
)
printf("error!\n");
else
printf("ok!\n");
return
0;
}

閱讀全文

與unix命令rename相關的資料

熱點內容
伺服器端渲染的數據怎麼爬 瀏覽:159
壓縮空氣噴射器 瀏覽:488
python提高效率 瀏覽:796
華為文件管理怎麼樣輸入解壓碼 瀏覽:800
深思加密狗初始化 瀏覽:566
黃金崩潰pdf 瀏覽:309
華為特定簡訊息加密 瀏覽:375
微機原理與單片機技術李精華答案 瀏覽:816
pic12c508單片機 瀏覽:309
androidgps調用 瀏覽:226
金文編pdf 瀏覽:445
14乘87減147的簡便演算法 瀏覽:473
怎麼創建edu文件夾 瀏覽:721
演算法的基礎問題 瀏覽:256
蘋果手機怎麼選擇app支付 瀏覽:856
訪問加密伺服器失敗怎麼回事 瀏覽:439
程序員每天跑步5公里 瀏覽:789
黨員對程序員有幫助么 瀏覽:550
慢跑穿壓縮衣還是緊身衣 瀏覽:214
什麼伺服器引擎最好 瀏覽:497