Как найти файлы, содержащие новую строку в имени файла?

10

Я пытаюсь найти файлы с новой строкой в ​​имени файла. Но я не могу понять, какой шаблон использовать.

Следующее работает, но не очень полезно, если я хочу использовать его в отступе кода.

find . -name '*
*'

Я попробовал эти два, и им удалось только найти имена файлов, которые содержали букву n :

find . -name '*\n*'
find . -name "*\n*"

Затем я нашел, как написать escape-последовательности с обратной косой чертой, и попробовал это:

find . -name "*$'\n'*"

Но это ничего не находит. Как мне написать шаблон?

toxalot
источник

Ответы:

13

В сценариях оболочки все является строкой. Вы действительно нужно процитировать , *чтобы предотвратить расширение имени файла , но вы не хотите , чтобы поставить последовательность обратной косой черты побег в двойных кавычках.

Вы можете просто объединить строки, разместив их сразу после друг друга.

find . -name '*'$'\n''*'

Но для лучшей читаемости вы можете использовать цитирование ANSI-C для всей строки.

find . -name $'*\n*'
toxalot
источник