`

linux 文件名命名规则

阅读更多

http://xu020408.blog.163.com/blog/static/26548920097209315756/

 

Linux 系统区分英文字符的大小写。命名目录和命名文件的规则是相同的。除非有特别的原因,否则用户创建的文件和目录名要使用小写字符。大多数的 Linux 命令也使用小写字符。
Linux 系统下的文件名长度最多可到256个字符。通常情况下,文件名的字符包括:字母、数字、"."(点)、"_"(下划线)和"-"(连字符)。Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义)在Linux 的 命令解释器(shell)中有特殊的含义(shell 类似于 DOS下的命令处理器COMMAND.COM)。这样的转意字符有:"?"(问号),"*"(星号), " "(空格), "$"(货币符), "&", 扩号等等。在文件名中应尽量避免使用这些字符。文件名中可以有" "(空格),但建议用户用"_"(下划线)来替代。"/" 既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的"\),因此"/"不能出现在文件名中。和DOS一样,"." 和 ".." 分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名。正如DOS 中一样,我们不能将文件命名为 . 或者 .. (点或者双点)——它们分别代表当前目录和当前目录的父目录(上一级目录)。这跟DOS中是完全一致的。

在Linux下可以使用长文件名和目录名,可以给它们取任何名字,但是必须遵守以下规则:
☆除了/外,所有的字符都可以;
☆有些字符最好不用,如空格符,制表符,退格符和字符:? @ # $&()\|; ‘’“”<>等;
☆避免使用+ -或.作为普通文件名的第一个字符(在Linux下以.开头的文件是属于隐藏文件);
☆另外和Windows文件命名不一样的是,在Linux下文件名大小写敏感。

 

这是另一份资料:

Linux 系统区分英文字符的大小写。比如,myfile, Myfile 和 myFILE表示的是三个不同的文件。同样,用户密码和登录名也需要区分大小写(这里沿用了Unix 和 C 语言的命名规则)。命名目录和命名文件的规则是相同的。除非有特别的原因,否则用户创建的文件和目录名要使用小写字符。大多数的 Linux 命令也使用小写字符。

Linux 系统下的文件名长度最多可到256个字符。通常情况下,文件名的字符包括:字母、数字、"."(点)、"_"(下划线)和"-"(连字符)。Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义) 在Linux 的 命令解释器(shell)中有特殊的含义(shell 类似于 DOS下的命令处理器 COMMAND.COM)。这样的转意字符有:"?"(问号),"*"(星号), " "(空格), "$"(货币符), "&", 扩号等等。在文件名中应尽量避免使用这些字符。文件名中可以有" "(空格),但建议用户用"_"(下划线)来替代。
"/" 既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的"\),因此"/"不能出现在文件名中。

和DOS一样,"." 和 ".." 分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名。

正如DOS 中一样,我们不能将文件命名为 . 或者 .. (点或者双点)——它们分别代表当前目录和当前目录的父目录(上一级目录)。这跟DOS中是完全一致的。

下面列出了一些转意字符及其意义:

  • * = 用于匹配任意长度大于等于零的字符序列。以 . (点)开头的文件名除外。
  • ? = 用于匹配任意单个字符
  • [abC1] = 用于匹配枚举集合中任意单个字符。比例中,集合由‘a’,‘b’,‘c’,‘1’组成。
  • [a-z] = 用于匹配任意小字字母
  • [A-F] = 用于匹配任意大写字母
  • [0-9] = 用于匹配任意个位数字
  • [a-zA-Z0-9] = 用于匹配任意字母(大小写)或者数字。
  • \ (反斜线)也是一个特殊的字符。它屏蔽后继特殊字母的特殊含义(转意),使该字符仅取其符号所代表的字面意义。


  例: 下面的命令会列出当前目录中除了文件名以 . 开头的文件之外的任何文件。

  ls *

  与此等价的命令是ls 或者 dir (不需要后跟 “*”)。 文件名以 . 开头的文件不被列出是因为 “.”是文件名的首字符,它并不与“*”匹配。我们可以把文件名以 . 开头的文件等价地理解成DOS中隐藏文件。使用ls –a (带 all 选项的ls 命令)或者 ls  .* 命令来查看这些“点”文件。“点”文件在用户的home目录中很常见。它们通常是用户级的配置文件。

  以下命令可列出当前目录中文件名含 . 的任何文件 (文件名以点开头的除外)。

  ls *.*

  以下命令可列出当前目录中文件名含两个点的任何文件(文件名以点开头的除外)。

  ls *.*.*

  请注意Linux中没有与DOS中文件扩展名相应的概念,但是你可以使用扩展名。例如,一个文件可以命名为 my_text.txt.zip 。另有一些DOS中的命名特色在Linux中是完全找不到的(比方说Micro~1.doc )。

  以下的命令会找出扩展名为“htm”后再跟任意一个字符的文件:

  locate *.htm?

  以下命令可列出当前目录中所有文件名以a,b或者任意大写字母开头的文件:

  ls [abA-Z]*

  以下命令可列出当前目录中所有文件名以a开头,以n结尾的文件:

  ls a*n

  命令行自动完成是一个有用的功能——使用[Tab]键可以极大的节约时间,使处理复杂的长文件名变得轻松。例如,使用自动完成的功能,可以极大的减化输入以下这个长文件名的工作。

  dir Eurosong\ 2000\ Olson\ Brothers\ -\ Fly\ on\ the\ wings\ of\ love\ \(denmark\).mp3

  我只要输入

  dir Eu<Tab>

  如果没有其他文件的文件名以Eu 开头,输入<Tab>之后,系统会自动输入文件名的其余部分。
如果还有其他文件的文件名也以Eu开头,我们可以查看一下可能的选择(系统会列出),进一步输入文件名中的下一两个字符,从而使文件的选择唯一化,系统的自动写成功能就可以启动完成整个长文件名的输入了。文件名中的反斜线作用在于提示系统其后继的字符“空格”仅取其字面意义,即,文件名中包含的确实是空格。

  文件名中的有“怪”字符怎么办?大部分问题可以通过自动完成功能解决。 另外,处理文件名中含有转意字符的文件,我们可以使用成对的‘’(单引号)。由于这些特殊的转意字符被单引号引用,命令解释器不会试图去解释其特殊意义。例如,给一个名为my file*的文件更名(文件名中含空格和*), 我们可以使用:

  mv 'my file*' filename_without_weird_characters.txt

  请注意我使用了一对‘’号 (单引号)。使用成对的“”(双引号)引用通常没有使用‘’有效。如果你使用“”号(双引号), 部份转意字符可能会被命令解释器加以解释(这就意味着它们可能被转意,而不是保持字面意义)。

  跟从UNIX的传统,在Linux上,创建文件时,我们可以在文件名中可以使用几乎任何字符,包括不可打印字符(控制字符)。但是这情况非常少见。如果你在遇到文件名使用了这些字符,你可能会感觉很异样。我通常会在适当的位置使用一个转意字符*对这种文件进行重命名。我会先使用ls命令确认我要重命名的文件的文件名,然后对这个文件进行更名(使用mv 命令):

  ls –l myfile*y.html
  mv myfile*y.html myfile.html

  (此例中我假定非标准字符位于字母e和y之间)

  这里举一个关于在文件名中使用非常规字符的极端的例子: 创建一个文件名以短横线 - 开头的文件,再等它删除。 用常规的删除命令似乎没有办法(因为短横钱通常是用来引导命令选项的)。例如:

  dir > -junk

  以上命令将创建一个以-junk为名的文件(跟DOS类似,符号 > 将dir 命令的输出重定向到一个名为“-junk”的文件。常规的删除文件命令无法把这个文件删除。我们需要使用:

  rm ./-junk

  文件名前的./ 表示当前目录。在此其目的是避免文件名把的首字符 - 被命令解释器当作rm命令的选项引导。事实上没有必要在文件名中使用这些特殊字符。遵从传统的命名规则,不会过多地使事情复杂化。

  除了使用自动完成,单引号,双引号之外,我们也可以利用 \ (反斜线) 对文件名中包含了非常规字符的文件进行操作。反斜线的作用在于屏蔽其后继字符的特殊意义。例如,我可以使用如下命令创建一个以 *?[ 为文件名的文件:

  touch \*\?\[

  (touch 命令创建一个空文件。如果同名文件已存在,则改变该文件最后更新的日期/时间)。

分享到:
评论

相关推荐

    批量更改文件夹中的任意文件名

    这种操作通常用于统一文件命名规范,清理重复或混乱的文件名,或者在处理大量数据时保持一致性。 二、重命名规则与模式 在批量更改文件名时,我们可以设置不同的规则和模式。常见的包括: 1. 序列号模式:例如...

    linux脚本批量更新文件名和映射的引用文件名

    3. **遍历并重命名文件**:脚本遍历文件列表,应用新的命名规则,并使用`mv`命令进行重命名。在执行重命名操作之前,确保新文件名不会与现有文件冲突。 4. **更新引用**:对于每个重命名的文件,脚本还需要搜索整个...

    Linux基础知识之Linux发行版的系统目录名称命名规则以及用途

    Linux系统目录的命名规则: 1、遵循FHS(Filesystem Hierarchy Standard)标准 2、严格区分大小写(字母相同大小写不同视为两个文件) 3、目录也是文件,在同一路径下,两个文件不能同名(跟Windows相同) 4、支持...

    利用Udev在linux设备装载时实现易于识别的设备文件名.pdf

    Linux 操作系统中,设备文件名的命名方式是一种重要的技术难题。随着计算机技术的发展和应用的广泛,计算机挂载的设备越来越多,虽然 Linux 依据设备类型分配了设备文件名,比如 eth0、eth1、sda、sdb,但是人们不...

    linux-UNixizeFilename替换文件名中恼人的反unix字符

    在Linux和Unix操作系统中,文件系统的命名规则有其特定的规范。这些系统遵循POSIX标准,其中不支持某些字符在文件名中出现,比如“/”(斜杠)用于路径分隔,控制字符以及一些特殊字符。在处理跨平台文件传输或者从...

    批量截取并重命名不同路径文件 (因Linux不支持256字符以上文件名,所以出此工具 )

    重命名可以基于文件的元数据(如创建时间、大小等)、内容或者自定义的命名规则。这样,即使原文件名过长,也可以将其缩短至Linux兼容的长度,同时保持足够的可识别性。 在描述中提到,这是一个VS工程源文件,这...

    批量修改文件名工具 文件名批量修改

    - 统一命名规范:在项目管理、数据整理或共享文件时,统一的文件命名规则有助于提高组织性和可读性。 - 数据迁移:在不同系统或平台间转移文件时,可能需要符合新环境的命名规则。 - 版本控制:在软件开发过程中...

    批量修改无规则文件名

    在日常工作中,我们经常需要对大量文件进行重新命名,尤其是在处理无规律文件名时更是如此。本文将详细介绍如何利用shell脚本(如SED、AWK、Perl)以及简单的DOS命令配合电子表格软件(如Excel或Google Docs),高效...

    批量修改文件名.rar

    批量修改通常涉及到文件命名规则的统一,例如添加前缀、后缀,或者替换特定字符。 2. **操作系统内置功能** 大多数现代操作系统如Windows、macOS和Linux都提供了批量重命名的功能。在Windows中,用户可以通过选中...

    Linux命名、代码

    本篇文章将深入探讨Linux的基本命名规则、常用命令及其在代码编写中的应用。 首先,我们来了解一下Linux的文件命名规则。在Linux系统中,文件名可以包含除斜线(/)和null字符外的任何ASCII字符,但一般推荐使用...

    Android资源文件名小写重命名

    4. 一致性:确保整个项目的所有资源文件名都遵循同样的命名规则,保持一致性。 总结,Android资源文件名的小写重命名是遵循最佳实践和提高项目管理效率的重要步骤。通过使用批量转换工具,开发者可以快速地将不符合...

    批量修改文件名 修改文件名

    - 统一格式:当文件来自不同来源,命名规则不一致时,批量改名可使文件名规范化,便于管理和查找。 - 数据整理:在数据分析项目中,可能需要根据特定规则重命名文件,以便进行后续处理。 - 版本控制:软件开发...

    文件名批量修改替换

    这个工具允许用户在指定的目录下查找并替换文件名中的特定字符,这在需要统一命名规则、整理文件库或优化文件结构时尤为有用。 首先,我们要理解批量文件名替换的基本原理。它通常基于文本搜索和替换的逻辑,只不过...

    长文件名在FAT文件系统上的实现

    FAT文件系统尤其是FAT32对于长文件名的支持是其重要特性之一,这种支持不仅增强了文件命名的灵活性,也提高了与其他操作系统的兼容性。通过对长文件名的存储结构和生成规则的理解,我们可以更好地管理和利用这些文件...

    免费批量更改文件名

    2. **命名规则**:该软件提供了多种命名规则选项,如添加前缀或后缀、替换字符串、数字序列(例如1, 2, 3...)以及基于文件属性(如创建日期或文件大小)进行命名。 3. **预览功能**:在实际执行重命名之前,...

    修改文件名 批量 修改文件名

    批量修改文件名通常适用于需要统一整理大量文件,比如照片、文档或音频文件等,尤其当这些文件的命名规则需要统一或者规范化时。在标题"修改文件名 批量 修改文件名"中,我们看到的重点就是批量处理文件名,这通常...

    Linux操作系统整理版.docx

    文件名命名规则:可以包括任意字符(除“/”),且“~”不能作为第一个字符),文件名的长度限制在 256 个字符以内。Linux/UNIX 对文件的管理也是采用树型结构的形式,目录是一组文件的集合。文件的引用通过路径。...

    文件名非法字符处理!!!!!

    2. **规范化命名**:确保文件名只包含ASCII字符,避免使用非英文字符,因为它们在不同的编码环境下可能会引发问题。可以使用`unicodedata`库在Python中对非ASCII字符进行标准化处理。 3. **编码转换**:在处理跨...

    批量修改文件名

    3. 文档管理:在企业内部,为了规范文档管理,可能会要求员工将文件按照特定的命名规则命名。 4. 网络下载:下载的文件往往带有默认的复杂名称,批量更名可以让文件名更加简洁易懂。 实现批量修改文件名的方式多种...

    通过正则表达式来批量修改文件名

    "通过正则表达式来批量修改文件名"是一个高级技巧,它利用了正则表达式的强大功能来实现灵活、精确的文件命名规则更改。在这个场景下,我们可以使用编程语言如Python、JavaScript或者专门的命令行工具来实现这一目标...

Global site tag (gtag.js) - Google Analytics