删除名称中带有 ^M 的文件夹

Pro*_*sor 3 bash

在 Linux 上,一个有缺陷的脚本创建的文件夹的名称末尾带有:^M。^M 移至 ? 与 ls -al。

搜索 ? 无法在 ^M(或 ^M)上进行搜索

我怎样才能删除这些文件夹?

Léa*_*ris 6

您需要的是使用 c 样式字符串,您可以在其中指定^M或 回车符及其反斜杠转义\r

C 风格的字符串由$单引号组成:$'a c-style string'

找到有问题的目录:

find . -type d -name $'*\r'
Run Code Online (Sandbox Code Playgroud)

列出有问题的目录名称:

ls -d *$'\r'
Run Code Online (Sandbox Code Playgroud)

通过删除尾随的 CR 来重命名有问题的目录。

find . -type d -name $'*\r' -execdir sh -c $'for d; do mv -- "$d" "${d%\r}"; done' _ {} +
Run Code Online (Sandbox Code Playgroud)

删除当前目录中的错误命名目录及其内容:

rm -r -- *$'\r'
Run Code Online (Sandbox Code Playgroud)