如何从文件夹名称中删除未知字符?

如何从文件夹名称中删除未知字符?

我有一台 Debian 10 机器,用作共享服务器(桑巴服务器)。我在 Mac 上,Document.1在共享文件夹中创建一个文件夹。当我进入我的 Linux Debian 机器时,我发现自己用一个未知字符(带有问号的方块)代替了..我想使用脚本来删除这些字符。我可以用手做,但我有一棵很大的树。

我不知道我是否说得足够清楚,如果您需要更多信息,请不要犹豫。

更新:我还在文件夹名称末尾添加空格(例如 = Document1

如果您有一点想法,我预先感谢您巴什脚本。祝你今天过得愉快。

root@debian:/home/ekip/Documents# ls -lb
    total 20
    drwxr-xr-x  3 ekip ekip 4096 juil. 21 09:33 deuxpoints
    drwxr-xr-x 10 ekip ekip 4096 juil. 21 16:12 espace
    drwxr-xr-x  2 ekip ekip 4096 juil. 22 16:47 script
    drwxrwxrwx  2 ekip ekip 4096 juil. 22 15:14 TEST
    -rw-r--r--  1 root  root    20 juil. 22 17:00 unicode.sh
    root@debian:/home/ekip/Documents#

答案1

如果您的文件中包含无法键入的字符或在终端中显示为?when ed,您仍然可以使用通配符与其进行交互:ls

$ touch 'neat↑file'
$ ls -l n*
-rw-r--r--    1 dopeghoti users         0 Jul 22 08:20 neat?file

正如您从用于创建它的命令中看到的那样,这?不是文字。?

但是,即使我们无法键入 a (或者确实无法看到它是哪个字符),我们仍然可以引用它:

$ mv neat?file neat_file
$ ls n*
-rw-r--r--    1 dopeghoti users         0 Jul 22 08:20 neat_file

?in bash(和大多数 shell)是“恰好一个字符”的通配符。

答案2

detox命令在清理大脑损坏的文件名方面做得非常出色。然后,如果有剩余的工作,您可以使用一些 sed 或 awk 来完成。

参考号https://linux.die.net/man/1/detox

我曾经使用 bash 脚本来完成此操作,但它们很快就会变得复杂且缓慢。

相关内容