Linux系统下文件名出现中文乱码如何重命名回来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统下文件名出现中文乱码如何重命名回来相关的知识,希望对你有一定的参考价值。

参考技术A 一不小心在给文件重命名的时候输入了中文字符,结果导致文件名乱码,无法通过cat, less, rm 或者mv 之类的命令操作了。

如何重新命名它,使得其恢复正常呢?

据说linux下每个文件还有一个文件节点编号,对应于每个特定的文件。可以通过find 该节点编号来执行重命名操作。

ls -i res???_out.txt
144117972422752993 res???_out.txt

前面的数字串就是节点编号
find . -inum 144117972422752993 -exec mv res_out.txt \;

linux下怎么样重命名文件

参考技术A 这两天在使用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
参考技术B linux下重命名文件或文件夹使用mv既可实现。
例子:
①将一个名为abc.txt的文件重命名为1234.txt
[root@station90 root]#mv abc.txt 1234.txt②将目录a重命名为b
[root@station90 root]#mv a b③将a.txt移动到/b下,并重命名为c.txt
[root@station90 root]#mv a.txt /b/c.txt

以上是关于Linux系统下文件名出现中文乱码如何重命名回来的主要内容,如果未能解决你的问题,请参考以下文章

如何解决linux上有中文命名的文件名压缩后下载到windows上再解压出来都是乱码?

如何解决linux上有中文命名的文件名压缩后下载到windows上再解压出来都是乱码?

java读取linux下文件名乱码

linux 文件名、文件内容 乱码

linux系统语言选择中文后乱码

windows下的txt文件传到Linux下中文乱码问题