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

Ну, упакуйте кого-то, ищет это, следующий параметр существует:

/proc/sys/net/ipv4/igmp_max_memberships

В настоящее время моя установка говорит 20 в источниках, я также вижу:

bits/in.h:#define IP_MAX_MEMBERSHIPS              20

Я думаю, увеличивая системный параметр, может быть достаточно, еще должен будет исправить заголовок также!

Править: похож на увеличение системного параметра, добивается цели.

16
22.08.2018, 20:17
6 ответов

С GNU ls (версия на невстроенном Linux и Cygwin, иногда также найденном в другом месте), можно исключить некоторые файлы при списке каталога.

ls -I 'temp_log.*' -lrt

(отметьте длинную форму -I --ignore='temp_log.*')

С zsh можно позволить оболочке сделать фильтрацию. Передача -d кому: ls чтобы не перечислять содержание подобранных каталогов.

setopt extended_glob          # put this in your .zshrc
ls -dltr ^temp_log.*

С ksh, ударом или zsh, можно использовать ksh фильтрация синтаксиса. В zsh, выполненном setopt ksh_glob сначала. В ударе, выполненном shopt -s extglob сначала.

ls -dltr !(temp_log.*)
25
27.01.2020, 19:48
  • 1
    Не одинарные кавычки в примере для GNU ls: ls-I 'temp_log.*'-lrt Они необходимы, чтобы передать шаблон команде и не позволить оболочке развернуть его. –  shargors 20.12.2016, 18:42
  • 2
    На v4.3.48 удара Ubuntu это должно быть -Itemp_log.* без любого пространства после -I –  Yan King Yin 16.08.2017, 12:23
  • 3
    @YanKingYin нет, хорошо иметь пространство после -I. Однако * потребности, которые будут заключены в кавычки так или иначе. -I temp_log.* не работает, но -I 'temp_log.*', -I "temp_log.*", -I temp_log.\*, и т.д. прекрасны. –  Gilles 'SO- stop being evil' 16.08.2017, 12:30

Можно использовать grep с опцией -v.

ls -lrt | grep -v <exclude-filename-part>
10
27.01.2020, 19:48
  • 1
    , не уверенный, почему это было downvoted, это - корректный ответ. –  Tim Kennedy 16.10.2012, 15:21
  • 2
    Выполнение grep на выводе ls не всегда корректно и не рекомендуется. Это имеет побочные эффекты. Не способный вспомнить точные проблемы. Примечание стороны - вниз голосует, не был от меня ;) –  mtk 16.10.2012, 15:28
  • 3
    Вот ссылка относительно того, почему парсинг ls является плохой идеей. копия –  mtk 18.10.2012, 16:28

Можно использовать find для этого:

find . \! -name 'temp_log*'

Это просто распечатает имена, можно добавить -ls сделать a ls -l вывод стиля с меткой времени и полномочиями или использованием -exec ls {} + для фактической передачи ls с любыми опциями, Вы хотите для столбцов, сортировки, и т.д.

Я записал это предположение, что это было просто файлами в каталоге. Если каталог содержит другие каталоги, можно не хотеть рекурсивно перечислять их

find . \! -name 'temp_log*' -maxdepth 1

И если Вы будете использовать ls, то Вы захотите передать-d опцию мешать ему перечислить в каталогах: -exec ls -d {} +

3
27.01.2020, 19:48

Я думаю, что Вы хотите использовать функцию оболочки, не ls. Я использую удар, таким образом, я проверил на то, в чем Вы хотите man bash. Поиск "^EXPANSION", (первым нажатием '/'). Выборка:

РАСШИРЕНИЕ

    Расширение выполняется на командной строке после того, как это было разделено на слова. Существует семь видов выполненного расширения: расширение фигурной скобки, расширение тильды, параметр и переменное расширение, управляет заменой, арифметическим расширением, разделением слова и расширением пути.

   ︙
... <надрез>...
   ︙

Расширение пути

    После разделения слова, если-f опция не была установлена, удар сканирует каждое слово для символов *, ?, и [. Если один из этих символов появляется, то слово рассматривается как шаблон и заменяется в алфавитном порядке отсортированным списком имен файлов, соответствующих шаблону. …

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

$ ls ./[^t]*

Это соответствовало бы чему-либо, что не запускается с буквы t. Если Вы добавляете больше символов между скобками, то Вы исключаете файлы, запускающиеся с тех букв также.

При поиске ссылки, и у меня есть хорошая! Посмотрите Сопоставление с образцом. Оттуда, это работало бы на Ваш случай:

$ ls -lrt ./!(temp_log.*)

Это требует что extglob опция оболочки включена с помощью shopt встроенный (shopt -s extglob), как указано Gilles.

2
27.01.2020, 19:48

Просто сделайте

ls -ltr `grep -il patterntosearch  *`
-1
27.01.2020, 19:48
  • 1
    grep поиски шаблона в файле, а не в имени файла. –  evilsoup 23.07.2013, 19:53

Dado que los archivos que NO desea imprimir tienen "registro temporal _". en el nombre del archivo, luego filtre con grep:

ls -lrt | grep -v "temp_log."

NOTA :La otra publicación con una respuesta similar probablemente fue rechazada porque el usuario no incluyó comillas " " alrededor de la cadena que grep debería estar buscando. Sin las comillas, no funciona como se anuncia.

-2
27.01.2020, 19:48

Теги

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