如何在Linux中操作文件名有空格和特殊字符

我们经常遇到文件和文件夹名称。 在大多数情况下,文件/文件夹名称与文件/文件夹的内容相关,并以数字和字符开头。 Alpha数字文件名是相当普遍和非常广泛使用,但是这不是这样的情况,当我们必须处理文件/文件夹名称中有特殊字符。

注 :我们可以有任何类型的文件,但为了简单和易于实现,我们将处理文本文件(.txt),整个文章。

最常见的文件名示例如下:

abc.txt
avi.txt
debian.txt
...

数字文件名的示例有:

121.txt
3221.txt
674659.txt
...

字母数字文件名的示例是:

eg84235.txt
3kf43nl2.txt
2323ddw.txt
...

具有特殊字符且不常见的文件名的示例:

#232.txt
#bkf.txt
#bjsd3469.txt
#121nkfd.txt
-2232.txt
-fbjdew.txt
-gi32kj.txt
--321.txt
--bk34.txt
...

这里的一个最明显的问题是-谁在地球上建立/处理有一个哈希文件/文件夹名称(#)分号(;)破折号(-)或其他特殊字符。

我同意你,这样的文件名不常见,你的shell不应该打破/放弃,当你必须处理任何这样的文件名。 也技术上讲,每个东西都是文件夹,驱动程序或任何其他东西在Linux中被视为文件。

处理名称中有破折号( - )的文件

创建以破折号开头的文件(-)说-abx.txt。

$ touch -abc.txt

示例输出

touch: invalid option -- 'b'
Try 'touch --help' for more information.

原因上面的错误,即壳破折号后解释任何东西(-)作为选项,显然没有这样的选项,因此是错误。

要解决这样的错误,我们必须要告诉的Bash shell(烨这一点,大多数的文章中的其他例子是BASH)不解释特殊字符(这里划线)后,任何东西,因为选项。

有两种方法可以解决此错误:

$ touch -- -abc.txt     [Option #1]
$ touch ./-abc.txt      [Option #2]

您可以通过运行命令验证因而上述两种方式创建的文件:ls或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 

注意 :您可以使用自己选择的任何其他编辑器代替纳米说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 -- -abc
or
$ rm -rf ./-abc

处理名称中具有HASH(#)的文件

符号#在BASH一个非常不同的意义。 一个后任何#被解释为注释,因此,通过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#.txt
or
$ 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}

Chevrons <>文件名

具有Chevrons的文件名必须用单引号括起来。

$ touch ''

文件名中的方括号[]

将带有方括号的文件名作为正常文件处理,您不需要特别小心。

$ touch [12.txt]

文件名中的得分(_)下

它们是非常常见的,不需要任何额外的。 只是做你会做一个正常的文件。

$ touch _12.txt

文件名中的等于(=)

有一个等于符号不改变任何东西,你可以使用它作为正常文件。

$ touch =12.txt

处理反斜线(\)

反斜杠告诉shell忽略下一个字符。 您必须在单引号中包含文件名,如在分号的情况下。 其余的事情是直接。

$ touch '\12.txt'

前倾斜的特殊情况

你不能创建一个文件名,其中包括正斜杠(/)直到你的文件系统错误。 没有办法逃脱前斜线。

所以,如果你可以创建一个文件,如“/12.txt'或'B / c.txt',那么你的文件系统有错误或你有Unicode支持,它可以让你创建一个斜杠的文件。 在这种情况下,正斜杠不是真正的正斜杠,而是一个看起来像正斜杠的Unicode字符。

问号(?)在文件名中

再次,一个例子,你不需要做任何特别的尝试。 具有问号的文件名可以以最通用的方式处理。

$ touch ?12.txt

文件名中的点标记(。)

以点开头的文件(.)是在Linux中非常特殊,被称为点文件。 它们通常是隐藏文件配置或系统文件。 你必须使用开关“-a”或“-A”用ls命令来查看这些文件。

创建,编辑,重命名和删除这些文件是直接的。

$ 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

文件名中的白色空间

创建一个文件名,其中有字符/字之间的空间,说:“ 大家好,我的名字是avishek.txt”。

使用空格来保存文件名并不是一个好主意,如果您必须使用可读的名称,则应使用下划线或破折号。 然而,如果你必须创建这样的文件,你必须使用反斜杠,忽略它的下一个字符。 要创建上述文件,我们必须这样做。

$ touch hi\ my\ name\ is\ avishek.txt
hi my name is avishek.txt

如何在Linux中操作文件名有空格和特殊字符

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容