⑴ linux中的c语言如何给一个文件重命名
列: 将test重命名为unfile
mvtestunfile
⑵ 用linux c语言编写 为一个文件里面的内容的每一行添加一个指定的字符
1.打开你要修改的文件A,
2.创建一个临时文件B,
3. while(没到达文件A末尾)
从A中读取一行,写到B中,然后写入你要追加的内容,写入换行符
4.关闭文件A,关闭文件B,
5.删除文件A(用remove函数),重命名B为A(用rename函数)
⑶ 怎么给一个文件重命名 linux
虽然Linux没有重命名文件和文件夹的命令,但是还是可以重命名文件的,重命名文件和文件夹是用mv命令,mv命令是移动文件的命令,但它还一个功能就是重命名,重命名的使用格式是:
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;
}
⑸ linux c语言rename失败
文件rename失败
有以下原因:
1、你没有读写权限操作该文件
2、你重新命名的文件已经存在 了
3、大批量同时操作,导致很多进程或者线程都在操作同一文件,造成了资源争夺。
4、你重新命名的文件名字含有特殊符号。
⑹ 如何把linux下c版本的rename改为perl版本的脚本
在linux系统把perl脚本使用chmod更改为可执行文件后有以下问题需要请教...
答:Q2:在编译的perl中会有中文,请问是否可以显示中文? 可以显示中文 Q3:经过chmod处理后的可执行文件,是否可以翻译为perl语言?然后重新修改脚本? chmod只是改变属性,不影响perl。因此,可以以翻译为perl语言或重新修改脚本. Q1.中的Genesis...
⑺ linux下怎么样重命名文件
这两天在使用Ubuntu系统上进行开发软件的安装,一直遇到创建的android
Studio图标无法使用的问题,创建的图标提示“应用程序启动错误”。在网上也找了很多文章,都是说文件夹中包含空格。但是文件路径确实没包含空格,但是包含-,即"android-studio",所以准备重命名进行尝试,但是遇到"bareword
not
allowed"的问题。
Linux下对文件重命名有两种命令:
mv
,rename
mv很简单,move文件移动
mv
/dir/file1
/dir2/file1
两个参数,第一个是源文件,第二个是目的地,如果第二个参数文件名不一样,则会重命名。
当两个参数不带目录,只有文件名时,那就是重命名了。这是单个文件的重命名。
rename
arg1
arg2
arg3
rename才是真正的批量重命名命令。而且他是3个参数,不是2个。
arg1:旧的字符串
arg2:新的字符串
arg3:匹配要重命名的文件,可以使用3种通配符,*、?、[char],*表示任意多个字符,?表示单个字符,[char]匹配char单个自定的精确字符,可以填写任意字符,foo[a]*表示只匹配fooa开头的文件名,如果一个文件是foobcc.txt,是不会被匹配的。
值的注意的是,此命令在不同的Linux版本也有不同,Debian一系的操作系统别有用法。举例说明:
比如/home下有两个文件
abbcc.txt,
addbb.txt
,
a.txt
我想把a替换为xxx,命令是这样的
:
rename
“a”
“xxx”
*.txt
那么它会首先去匹配有哪些文件需要修改,这里凡是.txt后缀的文件都会被匹配,如果改成?.txt则只会匹配到一个文件,那就是a.txt。然后把匹配到的文件中的a字符替换为xxx,注意测试时abab.txt这样的,只会替换第一个a,有待再了解。
说到Debian一系的操作系统,比如Ubuntu,这个命令这样使用是不对的,报错,向下面这样的:
Bareword
“a”
not
allowed
while
“strict
subs”
in
use
at
(eval
1)
line
1.
经过Google之后发现有这样的说法:
On
Debian-based
distros
it
takes
a
perl
expression
and
a
list
of
files.
you
need
to
would
need
to
use:
rename
‘s/foo/foox/’
*
这里是一个perl表达式,好理解点说就是综合了前两个参数为1个,这样就只需要2个参数,而非上面所说的3个参数形式。
所以在Ubuntu下执行上面举例的重命名时,命令是这样的:rename
‘s/a/xxx/’
*.txt
⑻ 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;
}
⑼ Linux中如何进行文件的重命名操作
1、mv
mv fromfile tofile
如把文件a.txt得命名为b.txt,可以是mv a.txt b.txt。
mv一次只能重命名一个文件,而且,它是移动命令。如果tofile已经存在的话,会直接装原文件覆盖,从而造成文件的丢失。当然有选项可以对已存在的文件进行提示,但是,我表示,那个选项我还真不常用。综合这两点考虑,还是决定看看rename吧。
2、rename
rename frompart topart filename 或者 rename 's/frompart/topart/' filename
如把文件a.txt得命名为b.txt,可以是rename 'a' 'b' a.txt (这个没有试过,看网上别人说的,是这样子的。)还可以是:rename 's/^a/b/' a.txt
在有的系统之上,用前面的那句可以通过,在有的系统之上,用后面的这个可以通过。两个不一样,一个是C的,一个是perl的。明显看出,后面这条是正则表达式的写法。具体采用哪一种方式,可以man rename,在手册页的最后一行看版本。由于我使用的系统rename的版本是Perl的,所以我只能采用后面的这一种方式。
rename 强大 的地方在于,你可以使用*,?等,对所有符合条件的文件名进行批量修改。而你在使用mv的时候,只能采用写脚本,用循环的方式来解决。
⑽ linux中如何用rename命令重命名一个文件
用法如下:
$ rename [options] [perlexpr] [files]
PS:
(1)options
-v 显示成功重命名的文件-n 只显示将被重命名的文件,但是不进行重命名-f 如果文件已存在,覆盖-e 表明需要需要被执行的code,如果没有-e,那么第一个参数将被当成code。
(2)perlexpr
这是一个Perl表达式,文件名应当在其中被改变,没学过Perl也没关系,这个命令用到的语法很像sed,容易上手。
(3)files
需要重命名的文件。
linux中如何用rename命令重命名一个文件示例:
1、去除文件扩展名
$ rename 's/.bak$//' *.bak
2、去除文件名中的空格
$ rename 's/ //g' *
3、文件名转为小写
$ rename 'y/A-Z/a-z/' *
4、现在有一堆文件,他们的文件名模式是这样的第一部分-haha-第二部分.file ,现在要把中间的-haha- 删去并把第一部分的字符串和第二部分的字符串对调,可以这样:
$ rename 's/(.*)-haha-(.*)(.file)/$2$1$3/' *.file