Назад | Перейти на главную страницу

Как найти все файлы в каталоге с недопустимыми символами в имени файла?

Вот что я приготовил и в чем застрял:

find / \! -name "*[:alnum:]*" -type f -ls > ~/Desktop/files_not-allowed-char.txt

Я действительно хочу перечислить все файлы, содержащие один из этих символов:

\ / : * ? " < > |

Наоборот: я хочу перечислить все файлы, в имени которых есть другие символы, кроме:

[A-Z][a-z][0-9]äöüÄÖÜß_-.()#[]
or in other "words":
[:alnum:] and "äöüÄÖÜß_-.()#[]"

Я надеюсь, что смогу уточнить свои пожелания. Я вхожу на неизвестную территорию ...

Заранее спасибо!


Справочная информация: я хочу перейти с AFP на SMB, но должен убедиться, что я переименовал все недопустимые имена файлов и папок (например, invalid_Directory_Name./ ).

С помощью ! Впереди "[: alnum:]"инвертирует любой файл, имеющий символ в [: alnum:], поэтому он будет соответствовать только именам файлов, которые ТОЛЬКО не содержат буквенно-цифровых символов.

Вы можете использовать другое регулярное выражение для поиска знаков препинания find . -name "*[:punct:]" но это включает персонажей, которые вам не интересны. find . -name "*[\/:*?"<>|]*" должен соответствовать чему-либо, у кого есть хотя бы один из этих символов в скобках. (хотя от некоторых из них, вероятно, нужно убежать :))