使用终端 (OSX) 删除“?”基本名称末尾的字符

Using Terminal (OSX) to remove "?" character at end of basename

我有一个末尾带有未知字符的文件列表(显示为“?”)

我的目标是

这里是 directory/folder 文件所在的路径:

/Users/MyName/Documents/InfoNotParsed

文件夹中文件的名称如下:

TextInformation?.txt
TextInformation2?.txt
TextInformation3?.txt

这是我试图在终端中 运行 删除“?”的命令。在扩展名之前的基本名称末尾:

cd /Users/MyName/Documents/InfoNotParsed

for f in *; do mv — “$f” “$f//\?/}”; done

我卡在命令行说:

for dquote>

这是 shell 中的整个终端文本:

MyName@Name-MBP ~ % cd /Users/MyName/Documents/InfoNotParsed 
MyName@Name-MBP InfoNotParsed % for f in *; do mv -- "$f" "${f//\?/}; done
for dquote> 

有什么建议吗?

您正在尝试使用 ? 匹配 unknown 字符,但 ? 不存在,只是终端显示未知字符.

尝试列出您希望保留的内容并使用 tr 删除补语,例如:

for f in *.txt; do g=`echo -n "$f" | tr -C -d "-7"`; mv -- "$f" "$g"; done

这远非万无一失,但可能适用于您的特定情况。