Как искать все файлы, начинающиеся с имени & ldquo; ABC & rdquo; в каталоге?

Я предлагаю вам удалить WUBI из Windows и выполнить чистую установку Ubuntu. Это будет наименее ошибочным.

1
задан 5 December 2012 в 21:21

9 ответов

Вы можете использовать команду find для поиска файлов с шаблоном

find . -type f -name "abc*" 

Вышеуказанная команда будет искать файл, который начинается с abc в текущем рабочем каталоге.

[ f4] будут перечислены файлы, которые точно совпадают. Например: abc

Вы также можете использовать опцию

 -iname
 -regex 

с командой find для поиска имени файла с использованием шаблона

22
ответ дан 25 May 2018 в 03:39

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

find | grep '^\./ABC'

... и заменив ABC на ваш текст.

Чтобы понять эту команду, давайте немного ее испорчу:

find перечисляет все файлы под текущим каталогом и его подкаталогами; используя его в одиночку, просто перечислит все. Обратите внимание, что find выводит каждый файл или каталог, начиная с ./, указывая, что их путь относится к текущему каталогу. Знать об этом важно, потому что это означает, что мы будем искать результаты, начиная с ./ABC, а не только ABC. Символ трубы | перенаправляет вывод одной команды на другую, в этом случае вывод find перенаправляется на grep. Это называется трубопроводом. grep принимает выходной сигнал и фильтрует его с использованием заданного шаблона, ^\./ABC. Обратите внимание, что шаблон цитируется одинарными кавычками ' ', чтобы предотвратить интерпретацию оболочкой специальных символов внутри оболочки. Теперь сам шаблон записывается в определенном синтаксисе, называемом регулярным выражением, или в регулярном выражении для краткости. Regex - чрезвычайно мощный инструмент поиска, если вы его освоите, и есть такие сайты, которые рассказывают об этом более подробно, но обратите внимание, что grep не является полноценным движком регулярных выражений, и вы не можете делать все с помощью Это. Для нашей цели: ^ в регулярном выражении совпадает с началом строки; это предотвращает совпадение шаблона, если оно не встречается в начале имени файла. . в regex тоже имеет особое значение: это означает «соответствовать любому одному символу здесь». Если вы хотите использовать его как буквальную точку, вам придется «убежать», используя обратную косую черту \ перед этим. (Да, совпадение любого персонажа было бы безобидным в нашем случае, но я сделал это для полноты.)
6
ответ дан 25 May 2018 в 03:39
  • 1
    Почему вы find | grep, когда find имеет свои превосходные возможности сопоставления шаблонов? – Darael 11 July 2017 в 14:26

вы можете использовать GREP, я думаю, что это самое простое решение, возможно, также добавить некоторые другие параметры grep, чтобы сделать совпадение более точным

tree | grep ABC
3
ответ дан 25 May 2018 в 03:39

Вы можете выполнить поиск определенного шаблона с помощью файлового менеджера Nautilus и регулярных выражений.

Чтобы сделать это, нажмите «Выбрать элементы соответствия» в меню «Gear», как показано ниже (вы также можете нажать Ctrl + s) .

Затем просто введите регулярное выражение ABC* и подтвердите.

enter image description here

Каждый файл, чье имя соответствует вашему шаблону, будет автоматически выбрано.

Я использую Nautilus 3.6. * из регулярного выражения PPA на Ubuntu 12.10 (Quantal) .

1
ответ дан 25 May 2018 в 03:39

Я использую

ls | grep abc

или

ls -la | grep abc

Он показывает все файлы с abc, а не только с abc. Но для меня это очень простой способ сделать это.

1
ответ дан 25 May 2018 в 03:39

Самое легкое решение для меня

ls | grep PATTERN

Здесь вы можете дать любое регулярное выражение в PATTERN.

Например, чтобы найти файлы с «ab» в любом месте его имени , type

ls | grep ".*ab.*"

Чтобы найти файлы, начинающиеся с «ab», введите

ls | grep "^ab"
1
ответ дан 25 May 2018 в 03:39

Python:

$ python -c 'import sys,os;found=[os.path.join(r,i) for r,s,f in os.walk(".") for i in f if i.startswith("ABC")];map(lambda x: sys.stdout.write(x+"\n") ,found)'

Perl:

$ perl -le 'use File::Find;find(sub{ -f && $_ =~/^ABC/ && print $File::Find::name  },".")' 
0
ответ дан 25 May 2018 в 03:39
printf "%s" /path/to/files/ABC*

Это сопоставление шаблонов шаров, которое закреплено на обоих концах. Это будет соответствовать всем вхождениям файлов, начинающихся с «ABC», таких как «ABC», «ABC.txt», «ABC123», но не «xABC». Однако из командной строки с использованием 'ls' вместо 'printf' существует безопасная альтернатива, в зависимости от того, с кем вы согласны, 'ls' небезопасен для использования в скрипте. В этом случае использование «printf» с сопоставлением шаблонов glob считается безопасным. Если вы собираетесь использовать это в скрипте, вывод 'printf' не будет содержать новый символ строки до конца выходного потока как такового:

printf "%s" /path/to/files/ABC*  

Возвращает:

Если вам нужны разрывы строк после каждого экземпляра:

printf "%s\n" /path/to/files/ABC*

Возвраты:

/path/to/files/ABC 

/path/to/files/ABC123

"/ path / to / files /" остается на выходе, если вы ввел его таким образом, когда вы запустили команду «printf». Без него просто появляется имя файла:

printf "%s" ABC* 

Возвращает

ABC ABC123

Предполагая, что вы запустите команду в каталоге, в котором находятся файлы.

0
ответ дан 25 May 2018 в 03:39
  • 1
    [F1] не очень хорошая идея. Подумайте, есть ли файл /path/to/files/ABC EFG, в имени файла есть пробел. Ваш tr разбивает имя файла на две отдельные строки, что плохо. Еще хуже, если в имени файла есть несколько пробелов. Я бы рекомендовал вам использовать printf "%s\n" ABC* вместо этого, что должно помочь с пробелами в именах файлов, но все еще проблематично с другими специальными символами, такими как \n – Sergiy Kolodyazhnyy 13 July 2017 в 10:14

Command-t в одном из моих любимых плагинов vim, это плагин на основе ruby, выше интеграции с FZF.

Используя Comamnd-T и FZF, вы можете выполнять поиск с чрезвычайно быстрым «нечетким» механизмом for:

Открытие файлов и буферов Подсказка к тегам и помощь Выполнение команд или предыдущих поисков и команд с минимальным количеством нажатий клавиш.

Как вы можете видеть

Command-t

Я всегда ищу в истории команд, открывая новый терминал и нажимаю: [ ! d13]

CTRL+R

В дополнение к поиску во всех папках рекурсивно путем записи на любой вкладке терминала:

fzf

Затем запустите свое имя файла

ABC

Также , вы можете писать внутри vim

:CommandT 

Действительно полезно особенно в больших папках.

0
ответ дан 25 May 2018 в 03:39

Другие вопросы по тегам:

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