Как показать все файлы в каталоге с именем, содержащим номер?

362
StPatrick

Как показать, что все файлы в каталоге с именем содержат номер? Я старался

ls [0-9] textfiles 

( textfiles) это мой каталог.

Вот как мне показывает мой карманный путеводитель по Linux. Я просто пытаюсь отобразить все файлы, которые содержат номер в имени. Я на самом деле попробовал более 20 вариантов, которые я нашел в своей книге и в Интернете.

1

2 ответа на вопрос

6
Kamil Maciorowski

Вы, вероятно, хотите что-то вроде

ls textfiles/*[0-9]* 

или (если « textfilesэто мой каталог» означает, что вы находитесь в каталоге):

ls *[0-9]* 

Обратите внимание, что эти команды не ограничиваются обычными файлами. Каталоги, символические ссылки, именованные каналы и другие записи могут совпадать. В широком контексте Unix все это «файлы», и такое сопоставление выполняется только в отношении их имен. Чтобы отличить обычные файлы, вам нужен другой инструмент, например find.

Я удивлен, что любое руководство посоветовало вам, так ls [0-9] textfilesкак оно не имеет большого смысла в контексте вашего вопроса.

Для декодирования *[0-9]*обратитесь man 7 globили, например, к этой статье, раздел « Стандартные подстановочные знаки ». Стоит заметить, что в вышеупомянутых случаях это оболочка (не ls!), Которая расширяет данный шаблон.

Спасибо. Это сработало отлично. StPatrick 5 лет назад 0
@StPatrick Пожалуйста, пройдите наш краткий [тур], чтобы узнать, что вы можете сделать с ответом, который решит вашу проблему. Kamil Maciorowski 5 лет назад 0
1
Xen2050

findтакже работает и может отображать только файлы, например, в текущем dir ( .):

find . -type f -name "*[0-9]*" 

Это рекурсивно по умолчанию, но используйте, -maxdepth 1чтобы избежать этого.

Похожие вопросы