如何访问目录名中含有非 ASCII、\n 字符的目录

如何访问目录名中含有非 ASCII、\n 字符的目录

我有一些数据保存在名称中含有非 ASCII 字符的目录中,我该如何访问其中的数据?

该目录显示为:

w0p6_t[[0.53.5]?[1.71.2]]

\但是,转义前面使用的特殊字符不起作用,也不像建议的那样用引号括住目录名这里

我相信这个“​​?”是一个新行字符(ascii \012),ls -lb返回:

w0p7_t[[0.53.5]\n[1.71.2]]

我可以使用以下命令查看目录的内容tree ,该命令显示目录如下:

w0p6_t[[0.53.5]\012[1.71.2]]

以及其所有内容。

我也尝试过:

cd "w0p7_t[[0.53.5]\n[1.71.2]]"
cd "w0p7_t[[0.53.5]\012[1.71.2]]"

cd w1p0_t\[\[0.53.5]\\012\[1.71.2\]\]
cd w1p0_t\[\[0.53.5]\\n\[1.71.2\]\]

但没有成功。

此外,尝试使用自动完成命令Tab不会提示有关该目录的建议。

答案1

以下是几种方法(可能还有更多)

  1. 一个联合国引用?将匹配任何单个字符 - 包括换行符。例如

    cd w0p6_t\[\[0.53.5\]?\[1.71.2\]\]
    

    或者

    cd 'w0p6_t[[0.53.5]'?'[1.71.2]]'
    
  2. 你可以使用 bash $'string'ANSI 转义来扩展\n序列

    cd $'w0p6_t[[0.53.5]\n[1.71.2]]'
    

相关内容