linux 文件名 *,Linux里的文件名通配-* ? [] [^] {}

写这篇文章的目的是为了说明Linux系统里文件名匹配时要用的特殊字符

特别注意:要与正则表达式区分开来。

正则表达式见我另外一篇文章:

http://afterdawn.blog.51cto.com/7503144/1855128

匹配模式:元字符

*:匹配任意长度的任意字符

pa*, *pa*, *pa, *p*a*

pa, paa, passwd

?:匹配任意单个字符

pa?, ??pa, p?a, p?a?

pa, paa, passwd

[]:匹配指定范围内的任意单个字符

有几种特殊格式:

[a-z], [A-Z], [0-9], [a-z0-9]

[[:upper:]]:所有大写字母

[[:lower:]]:所有小写字母

[[:alpha:]]:所有字母

[[:digit:]]:所有数字

[[:alnum:]]:所有的字母和数字

[[:space:]]:所有空白字符

[[:punct:]]:所有标点符号

pa[0-9][0-9], 2[0-9][0-9]

[^]:匹配指定范围外的任意单个字符

[^[:upper:]]

[^0-9]

[^[:alnum:]]

练习1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录;

ls -d /var/l?[[:lower:]]

练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;

ls -d /etc/[0-9]*[^0-9]

练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录;

ls -d /etc/[^a-z][a-z]*

练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/magedu.com目录;

cp -r /etc/m*[^0-9] /tmp/magedu.com/

练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下;

cp -r /usr/share/man/man[0-9] /tmp/man/

练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d/目录下;

cp -r /etc/[mnrp]*.conf /tmp/conf.d/

特别指出:{}的使用和$?

{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b

练习:如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b?

mkdir -pv /tmp/x/{y1/{a,b},y2}

如何创建a_c, a_d, b_c, b_d?

mkdir -v {a,b}_{c,d}

$?:命令的执行状态结果

命令执行的状态结果:

bash通过状态返回值来输出此结果:

成功:0

失败:1-255

命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;

命令正常执行时,有的还回有命令返回值:

根据命令及其功能不同,结果各不相同;

引用命令的执行结果:

$(COMMAND)

或`COMMAND`

bash的基于特性:引用

强引用:''

弱引用:""

命令引用:``

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当Linux文件名出现乱码时,可能是因为文件名中包含了非ASCII字符,而系统默认使用的字符编码不支持这些字符。解决方法可以尝试以下几种: 1. 修改系统字符编码:可以通过修改系统的字符编码来解决乱码问题。具体方法可以参考Linux系统的相关文档。 2. 修改文件名:将文件名中的非ASCII字符替换为系统支持的字符,或者使用Unicode编码的字符来命名文件。 3. 使用特定的字符编码打开文件:如果文件名中包含了非ASCII字符,可以尝试使用特定的字符编码打开文件,比如UTF-8编码。 4. 使用特定的工具:有些特定的工具可以处理乱码问题,比如convmv命令可以将文件名从一种字符编码转换为另一种字符编码。 ### 回答2: Linux文件名乱码可能与字符编码不匹配有关。在Linux系统中,默认使用的是UTF-8编码,该编码能够支持包括中文在内的绝大部分字符。因此,应确保系统的字符编码正确设置。 如果在Linux中看到文件名乱码,可以尝试以下解决方法: 1. 检查系统字符编码设置:使用命令`locale`查看当前的字符编码设置,确保其为UTF-8。 2. 修改终端字符编码:如果使用终端命令行操作时出现文件名乱码,可以尝试修改终端的字符编码设置。可以使用`export LANG="en_US.UTF-8"`或`export LC_ALL="en_US.UTF-8"`命令来设置终端的字符编码为UTF-8。 3. 文件名编码转换:如果文件名已经乱码,可以使用`convmv`命令将文件名转换为正确的编码格式。例如,使用`convmv -r -f old_encoding -t UTF-8 --notest <filename>`命令来转换文件名编码。 4. 使用正确的字符编码打开文件:如果文件名仍然无法显示正确,可能是文件本身的编码问题。以文本编辑器打开文件时,需要确保使用正确的字符编码来解析文件内容。 综上所述,解决Linux文件名乱码问题可以通过检查和修改系统字符编码、终端字符编码设置,以及进行文件名编码转换等方式。 ### 回答3: 当我们在Linux系统中遇到文件名乱码时,通常是由于字符集编码问题导致的。Linux系统支持多种字符集编码,比如UTF-8、GBK等,而不同的字符集编码可能导致文件名显示不正确。以下是一些可能的解决方法: 1. 查看当前字符集编码:可以使用 `locale` 命令来查看当前系统的字符集编码设置。确保字符集编码设置正确并支持所需字符。 2. 更改字符集编码:如果当前字符集编码设置不正确,可以使用 `locale-gen` 命令重新生成并更改字符集编码。可以在 `/etc/locale.gen` 文件中进行相应配置。 3. 重命名文件:对于已经存在乱码的文件,可以使用 `mv` 命令重命名文件为正确的字符集编码。例如,`mv 乱码文件名 正确文件名`。需要注意的是,需要确保正确的字符集编码与文件实际编码一致。 4. 修改Shell环境:有时候,在Shell配置文件中添加以下语句可以解决字符集编码问题: ``` export LANG=en_US.UTF-8 export LC_CTYPE=en_US.UTF-8 ``` 5. 使用字符转换工具:如果有大批量乱码的文件需要处理,可以使用一些字符转换工具,如 `iconv` 命令,进行批量转换文件名字符集编码。 总之,解决Linux文件名乱码问题的关键在于正确设置字符集编码,并确保字符集编码与文件实际编码一致。通过一些基本的命令和工具,我们可以简单地解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值