Обзор
Поиск определенных типов файлов в беспорядке может отнимать много времени, если искать их вручную. Автоматизация процесса поиска определённых типов файлов с помощью мощных команд Linux может улучшить наш рабочий процесс и позволить нам сосредоточиться на поставленной задаче.
В этом руководстве мы рассмотрим различные способы создания списка файлов с несколькими расширениями в Linux.
Все приведенные ниже инструкции были протестированы на Ubuntu 20.04.6 LTS.
Использование команды ls
Команда ls перечисляет все файлы в каталоге.
Однако, комбинируя ее со скобками и подстановочными знаками, мы можем использовать ее для перечисления файлов, заканчивающихся разными расширениями, экономя время и силы на их поиск по отдельности.
🐧 Как найти файлы по имени без учета регистра на Linux
Давайте воспользуемся этой командой, чтобы перечислить файлы, заканчивающиеся на .txt или .csv:
$ ls *.{txt,csv}
checksums.txt example2.csv example3.txt example5.csv
example1.csv example2.txt example4.csv example5.txt
example1.txt example3.csv example4.txt
Таким образом, используя скобки и подстановочные знаки в команде ls, мы можем вывести список файлов с несколькими расширениями одновременно.
Использование команды find с параметрами -iname и -or
Утилита find в Linux определяет местоположение файлов по их именам.
Использование команды find с опцией -iname гарантирует, что утилита выполнит поиск по имени без учета регистра.
В частности, заглавная и строчная форма символа в имени файла будет считаться эквивалентной для целей поиска.
🐧 Удаление пустых каталогов в командной строке с помощью Find
Параметр -or – это логический оператор, который указывает команде find рассматривать расширения файлов, соответствующие либо предыдущему, либо последующему условию.
В приведенном ниже примере команда find с параметрами -iname и -or используется для перечисления файлов, заканчивающихся на .txt или .csv, в текущем каталоге:
$ find -iname '*.txt' -or -iname '*.csv'
./example3.txt
./example1.csv
./case1.TXT
./example2.txt
./example5.csv
./example1.txt
./example3.csv
./example2.csv
./case1.CSV
./example5.txt
./checksums.txt
./case2.CSV
./example4.csv
./example4.txt
./case2.TXT
Как видно из приведенного выше примера, дополнительные опции обеспечивают поиск имен файлов с расширениями в смешанном регистре без учета регистра.
Как видно из приведенного выше примера, дополнительные опции обеспечивают поиск без учета регистра для имен файлов с расширениями в смешанном регистре.
Использование команды find с регулярными выражениями
Утилита find использует регулярные выражения (regex) для поиска определенных шаблонов файлов.
Давайте воспользуемся командой find с regex, чтобы перечислить файлы, заканчивающиеся на .txt или .csv, в текущем каталоге:
$ find . -iregex '.*\.\(csv\|txt\)' -printf '%f\n'
example3.txt
example1.csv
case1.TXT
example2.txt
example5.csv
example1.txt
example3.csv
example2.csv
case1.CSV
example5.txt
checksums.txt
case2.CSV
example4.csv
example4.txt
case2.TXT
Вот краткое описание этой команды.
Сначала мы используем команду find для поиска файлов в текущем каталоге:
find .
Затем мы инструктируем команду find использовать расширенное регулярное выражение для поиска файлов, заканчивающихся на .txt или .csv, независимо от их регистра:
-iregex '.*\.\(csv\|txt\)'
Наконец, мы настраиваем вывод так, чтобы в нем отображалось только имя файла без путей, что делает его легко читаемым:
-printf '%f\n'
Поэтому использование регулярных выражений в команде find очень эффективно и точно для перечисления нескольких файлов с разными расширениями.
Заключение
В этой статье мы узнали, как выводить список файлов с несколькими расширениями с помощью команд ls и find.
С помощью этих команд мы можем перемещаться по файловой системе Linux и находить нужные нам файлы по их расширениям.
см. также:
- 🐧 Как найти скрытые каталоги, файлы и папки Linux / Unix
- 🐧 Как найти все файлы, принадлежащие определенному пользователю в Unix / Linux
- 🐧 Как найти все файлы с правами 777 на Linux
- 🐧 Как удалить огромные (100-200 ГБ) файлы на Linux