导航:首页 > 程序命令 > 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相关的资料

热点内容
服务器端渲染的数据怎么爬 浏览:163
压缩空气喷射器 浏览: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