热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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#.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}
###文件名中的 V 形 <>带有 V 字的文件名必须用单引号括起来。

>touch '<12.txt>'
文件名中的方括号 [ ]将带有方括号的文件名视为普通文件,您无需特别注意它。

>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

推荐阅读
  • 深入解析:RKHunter与AIDE在入侵检测中的应用与优势
    本文深入探讨了RKHunter与AIDE在入侵检测领域的应用及其独特优势。通过对比分析,详细阐述了这两种工具在系统完整性验证、恶意软件检测及日志文件监控等方面的技术特点和实际效果,为安全管理人员提供了有效的防护策略建议。 ... [详细]
  • 深入解析:Android开发进阶之Vim编辑器基础操作与应用
    本文深入探讨了Android开发中使用Vim编辑器的基础操作与应用。通过详细解析Vim的基本命令、配置文件和常用插件,帮助开发者提高代码编写效率。文章还介绍了如何在Android开发环境中高效利用Vim,包括集成开发环境(IDE)的配置和常见问题的解决方法。适合初学者和有经验的开发者参考。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • 在Linux环境中,通过编写Shell脚本来实现自定义命令的创建与激活,能够极大地简化服务器上多个子系统的管理操作。例如,通过简单的命令如“tt”,即可快速查看各个应用程序的名称及其运行状态,从而提高系统维护的效率和便捷性。 ... [详细]
  • 在上篇文章的基础上,本文将继续探讨 Linux 设备驱动中的设备模型与 `devicedriverbus` 机制。在将设备注册到总线之前,需要先创建 `device` 对象。可以通过静态定义 `device` 结构体变量,并调用 `device_register` 函数来完成这一过程。此外,文章还将详细解析设备模型的内部工作机制,以及 `devicedriverbus` 机制如何实现设备与驱动的自动匹配和管理。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • 在Linux环境下,本文详细探讨了Apache服务器中CGI技术的应用与实现。首先,通过使用yum包管理器安装了必要的软件,如PHP。安装完成后,对Apache服务器进行了配置,确保CGI功能正常运行。此外,还介绍了如何编写和调试CGI脚本,以及如何在实际环境中部署这些脚本以提供动态网页内容。实验结果表明,通过合理的配置和优化,Apache服务器能够高效地支持CGI应用程序,为用户提供丰富的交互体验。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 第五章详细探讨了 Red Hat Enterprise Linux 6 中的 Ext3 文件系统。5.1 节介绍了如何创建 Ext3 文件系统,包括必要的命令和步骤,以及在实际操作中可能遇到的问题和解决方案。此外,还涵盖了 Ext3 文件系统的性能优化和维护技巧,为用户提供全面的操作指南。 ... [详细]
  • SpringBoot启动脚本详解:BAT文件应用与基础入门指南(SpringBoot系列第1篇)
    如果你还在为SSM框架的复杂搭建过程和繁琐的配置文件而烦恼,那么SpringBoot将是你的一大福音。作为SpringBoot系列的第一篇文章,本文详细介绍了如何使用BAT文件来启动SpringBoot应用,并提供了基础入门指南,帮助开发者快速上手,简化开发流程。 ... [详细]
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 在 Red Hat 系统的启动过程中,首先运行的程序是 `/sbin/init`。该程序会读取 `/etc/inittab` 文件,并根据其中的配置进行系统的初始化工作。例如,它会根据设定的运行级别启动相应的服务和进程,确保系统能够顺利进入指定的运行状态。此外,`/sbin/init` 还负责管理系统关机和重启等操作,确保系统的稳定性和安全性。 ... [详细]
author-avatar
阿凡达0205
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有