3

У меня есть много файлов в папке, например

Kiran.txt
Kiran1.txt
Kiran221.txt
Kiran144.txt
Time.csv
Timer.csv
Timer2.csv
Timer444.csv
Timer266.csv
Account.sh
Account3.sh
Account3333.sh
Account3333.sh
Account333333.sh

Из этого каталога я хочу узнать, как я могу использовать grep для отображения файлов на основе части их имени файла - например, те, которые начинаются с "Учетная запись" или те, которые заканчиваются на «.sh».

4 ответа4

8

Вы можете find

find -type f -name "Account*"

Альтернатива 2 (это может включать и папку)

ls -1 Account*

Альтернатива 3 (grep, это может включать и папку)

ls -1 | grep -E "^Account"
7

Используйте подстановочный знак (что это за подстановочный знак?):

ls *.sh

* Будет соответствовать всему, что вы хотите до окончания .sh . Используйте другие опции ls для отображения, например, -l чтобы сделать длинный список. Смотрите man ls для получения дополнительной информации о том, что вы можете сделать с ним.

Обратите внимание, что ls также перечислит любой каталог, заканчивающийся на .sh , а не только файлы.


Вы также можете использовать find чтобы преодолеть эту проблему.

find . -type f -maxdepth 1 -name "*.sh"

Эта команда перечисляет только "настоящие" файлы. Использование find - это то, что я бы порекомендовал, если вы захотите потом что-то сделать с найденными файлами. Вы можете сделать это с опцией -exec.

3

Используйте следующую команду

   ls *.sh
3

Стандартным решением является труба:

ls | grep ^Account

С чем-то таким простым, как «Файлы, начинающиеся с учетной записи», глобусы также будут работать:

ls Account*

но в целом grep более мощный, и он не рискует переполнить максимальную длину командной строки, если ваша папка действительно, действительно заполнена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .