linux中操作带有空格和特殊字符的文件名 |
您所在的位置:网站首页 › 小哥哥脚扭伤了之后的生活 › linux中操作带有空格和特殊字符的文件名 |
我们经常遇到文件和文件夹名称。在大多数情况下,文件 / 文件夹名称与文件 / 文件夹的内容相关,并以数字和字符开头。字母数字文件名非常常见并且使用非常广泛,但是当我们必须处理包含特殊字符的文件 / 文件夹名称时,情况并非如此。 注意:我们可以拥有任何类型的文件,但为了简单和易于实现,我们将在整篇文章中处理文本文件 (.txt)。 最常见的文件名示例是: rumenz.txt abc.txt ..数字文件名的示例是: 121.txt 3221.txt 234.txt ...字母数字文件名的示例是: abc123.txt def1.txt 123abc.txt ...具有特殊字符且不常见的文件名示例: #232.txt #bkf.txt #bjsd3469.txt #121nkfd.txt -2232.txt -fbjdew.txt -gi32kj.txt --321.txt --bk34.txt ...这里最明显的问题之一是——究竟是谁创建 / 处理具有 Hash(#)、分号(;)、破折号(-)或任何其他特殊字符的文件 / 文件夹名称。 创建一个以破折号开头的文件-,比如**-abx.txt**。 >touch -abc.txt touch: invalid option -- 'b' Try 'touch --help' for more information.上述错误的原因是,shell 将破折号后的任何内容解释-为选项,显然没有这样的选项,因此是错误。 为了解决这样的错误,我们必须告诉 Bash shell(这个和本文中的大多数其他示例都是针对BASH 的)不要将特殊字符(这里是破折号)之后的任何内容解释为选项。 有两种方法可以解决此错误: >touch -- -abc.txt [Option #1] >touch ./-abc.txt [Option #2]您可以通过运行命令ls -l来验证通过上述两种方式创建的文件以获得长列表。 >ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 11:05 -abc.txt要编辑上述文件,您可以执行以下操作: >nano -- -abc.txt or >nano ./-abc.txt注意:您可以将nano替换为您选择的任何其他编辑器,例如vim: >vim -- -abc.txt or >vim ./-abc.txt同样要移动此类文件,您必须执行以下操作: >mv -- -abc.txt -a.txt or >mv -- -a.txt -abc.txt并删除此文件,您必须执行以下操作: >rm -- -abc.txt or >rm ./-abc.txt如果文件夹中有很多文件名包含破折号,并且您想一次删除所有文件,请执行以下操作: >rm ./-* 重要注意事项: 1.对于文件名称中任意数量的连字符及其出现,遵循与上述相同的规则。即,-abc.txt,ab-c.txt,abc-.txt等。 **2.**对于具有任意数量的连字符及其出现的文件夹名称,遵循与上述相同的规则,除了删除文件夹时必须使用 “rm -rf” 作为: >rm -rf -- -abc or >rm -rf ./-abc处理名称中带有 HASH (#) 的文件 该符号#在 BASH 中具有非常不同的含义。a 之后的任何内容都#被解释为注释,因此被 BASH 忽略。 创建一个文件**#abc.txt**。 >touch #abc.txt touch: missing file operand Try 'touch --help' for more information.上述错误的原因是 Bash 正在解释**#abc.txt**注释并因此忽略。所以命令 touch已经在没有任何文件操作数的情况下传递,因此是错误。 要解决此类错误,您可以要求 BASH 不要将**#**解释为注释。 >touch ./#abc.txt or >touch '#abc.txt'并验证刚刚创建的文件为: >ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:14 #abc.txt创建一个文件,其名称包含#除乞讨之外的任何地方。 >touch ./a#bc.txt >touch ./abc#.txtor >touch 'a#bc.txt' >touch 'abc#.txt'运行 “ls -l” 来验证它: >ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:16 a#bc.txt -rw-r--r-- 1 avi avi 0 Jun 8 12:16 abc#.txt同时创建两个文件(比如a和**#bc**)时会发生什么: >touch a.txt #bc.txt 验证刚刚创建的文件: >ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:18 a.txt从上面的示例中可以明显看出,它只创建了文件 “a”,而文件 “#bc” 已被忽略。要成功执行上述情况,我们可以这样做, >touch a.txt ./#bc.txt or >touch a.txt '#bc.txt'并将其验证为: >ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 12:20 a.txt -rw-r--r-- 1 avi avi 0 Jun 8 12:20 #bc.txt文件移动: >mv ./#bc.txt ./#cd.txt or >mv '#bc.txt' '#cd.txt'将其复制为: >cp ./#cd.txt ./#de.txt or >cp '#cd.txt' '#de.txt'编辑特殊文件名: >vi ./#cd.txt or >vi '#cd.txt' >nano ./#cd.txt or >nano '#cd.txt'删除特殊文件名 >rm ./#bc.txt or >rm '#bc.txt'要删除文件名中带有哈希 # 的所有文件,您可以使用: # rm ./#* 处理名称中带有分号 ; 的文件如果您不知道,分号在 BASH 和其他 shell 中充当命令分隔符。分号可让您一次执行多个命令并充当分隔符。你有没有处理过任何带有分号的文件名?如果不在这里,你会的。创建一个包含分号的文件。 >touch ;abc.txt touch: missing file operand Try 'touch --help' for more information. bash: abc.txt: command not found上述错误的原因是,当您运行上述命令时,BASH 将touch解释为命令,但在分号前找不到任何文件操作数,因此报告错误。它还报告另一个错误,即找不到“abc.txt” 命令,只是因为在分号 BASH 之后等待另一个命令而 “abc.txt” 不是命令。 要解决此类错误,请告诉 BASH 不要将分号解释为命令分隔符,如下所示: >touch ./';abc.txt' or >touch ';abc.txt'注意:我们用单引号将文件名括起来''。它告诉 BASH 这;是文件名的一部分,而不是命令分隔符。 对名称中带有分号的文件和文件夹的其余操作(即复制、移动、删除)可以通过将名称括在单引号中来直接执行。处理文件 / 文件夹名称中的其他特殊字符文件名中的加号 (+)不需要任何额外的东西,只需按照正常方式进行,如下所示的简单文件名。 >touch +12.txt 文件名中的美元符号 $您必须将文件名括在单引号中,就像我们在分号的情况下所做的那样。其余的事情都是直截了当的.. >touch '$12.txt' 文件名中的百分比 %你不需要做任何不同的事情,把它当作普通文件。 >touch %12.txt 文件名中的星号* 文件名中包含星号不会改变任何内容,您可以继续将其用作普通文件。 >touch *12.txt 注意:当您必须删除以 开头的文件时*,切勿使用以下命令删除此类文件。 >rm * or >rm -rf *而是使用, >rm ./*.txt 文件名中的感叹号 !只需将文件名括在单引号中,其余内容相同。 >touch '!12.txt' 在文件名中的符号 @没什么额外的,将具有 At Sign 的文件名视为非正常文件。 >touch '@12.txt' ^在文件名中无需额外注意。使用文件^名中的文件作为普通文件。 >touch ^12.txt 文件名中的与号 &文件名应该用单引号括起来,你就可以开始了。 >touch '&12.txt' 文件名中的括号()如果文件名有括号,则需要用单引号将文件名括起来。 >touch '(12.txt)' 文件名中的大括号 {}无需额外护理。只需将其视为另一个文件即可。 >touch {12.txt} ###文件名中的 V 形 带有 V 字的文件名必须用单引号括起来。>touch '' 文件名中的方括号 [ ]将带有方括号的文件名视为普通文件,您无需特别注意它。 >touch [12.txt] 文件名中的分数 _它们很常见,不需要任何额外的东西。只需执行您对普通文件所做的操作即可。 >touch _12.txt 文件名中的等于 =拥有等号不会改变任何东西,您可以将其用作普通文件。 >touch =12.txt 处理反斜杠 \反斜杠告诉 shell 忽略下一个字符。您必须将文件名括在单引号中,就像我们在分号的情况下所做的那样。其余的事情都是直截了当的。 >touch '.txt' 正斜杠的特例. 你不能创建名称包含正斜杠(/)的文件,直到您的文件系统出现错误。没有办法逃避正斜杠。 因此,如果您可以创建诸如**'/12.txt'或'b/c.txt' 之类**的文件,那么要么您的文件系统有错误,要么您有 Unicode 支持,这使您可以创建带有正斜杠的文件。在这种情况下,正斜杠不是真正的正斜杠,而是一个看起来像正斜杠的 Unicode 字符。 文件名中的问号 ?同样,您不需要进行任何特殊尝试的示例。可以以最一般的方式处理带有问号的文件名。 >touch ?12.txt 文件名中的点号 (.) 以 dot 开头的文件.在 Linux 中非常特殊,称为 dot 文件。它们是隐藏文件,通常是配置或系统文件。您必须在ls 命令中使用开关 '-a'或'-A'来查看此类文件。 此类文件的创建、编辑、重命名和删除非常简单。 >touch .12.txt 注意:在 Linux 中,您可以(.)在文件名中包含任意数量的点。与文件名中的其他系统点不同,并不意味着将名称和扩展名分开。您可以创建一个具有多个点的文件: >touch 1.2.3.4.5.6.7.8.9.10.txt >ls -l total 0 -rw-r--r-- 1 avi avi 0 Jun 8 14:32 1.2.3.4.5.6.7.8.9.10.txt文件名中的逗号 ,您可以在文件名中包含逗号,数量不限,不需要任何额外的内容。只需按照正常方式进行,就像简单的文件名一样。 >touch ,12.txt or >touch ,12,.txt文件名中的冒号 (:)您可以在文件名中包含冒号,数量不限,不需要任何额外的东西。只需按照正常方式进行,就像简单的文件名一样。 >touch :12.txt or >touch :12:.txt文件名中包含引号(单引号和双引号)要在文件名中包含引号,我们必须使用交换规则。即,如果您需要在文件名中使用单引号,请将文件名用双引号括起来,如果您需要在文件名中使用双引号,则用单引号将其括起来。 >touch "15'.txt" and >touch '15”.txt'文件名中的波浪号 (~) Linux 中的一些编辑器(如emacs)会为正在编辑的文件创建备份文件。备份文件具有原始文件的名称以及文件名末尾的波浪号。您可以在任何位置拥有一个名称包含波浪号的文件,如下所示: >touch ~1a.txt or $touch 2b~.txt文件名中的空格 创建一个名称在字符 / 单词之间有空格的文件,说 “嗨,我的名字是 rumenz.txt”。 文件名带空格不是一个好主意,如果您必须区分可读的名称,则应使用下划线或破折号。但是,如果您必须创建这样的文件,则必须使用反斜杠来忽略它的下一个字符。要创建上述文件,我们必须这样做.. >touch hi\ my\ name\ is\ rumenz.txt hi my name is rumenz.txt |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |