删除文件名中带有特殊字符的目录

bra*_*can 2 shell bash special-characters wildcards rm

我有这些棘手的目录,我不知道如何删除。如果我跑

ls -ld *
Run Code Online (Sandbox Code Playgroud)

我明白了……

drwxrwxr-x 7 user1 taskfmri 2048 Jan 22 15:26 857263
drwxrwx--- 4 user2 taskfmri 2048 Jan 23 16:32 857263?

这些目录中约有 50 个带有“?” 在 ls。不幸的是,“?” 不是字面上的 ?,而是终端无法显示的一些特殊字符

删除所有这些具有未知特殊字符的目录而不删除几乎相同命名的好目录的最佳方法是什么?

JPG*_*JPG 7

如果您的所有目录的名称都由数字组成,然后是一个特殊字符(既不是数字也不是字母),您可以使用

find -maxdepth 1 -type d -regex "./[0-9]*[^0-9a-zA-Z]" -exec rm -r {} \;