Найти и показать только название директорий начинающихся на цифры
Найти и показать только название директорий начинающихся на цифры
1 ответ
|
Давайте создадим себе несколько директорий, чтобы затем командой find найти все директории, которые начинаются с цифры. Создание директорий для тест-кейсаИтак, создадим n директорий в каталоге dirs. mkdir -p dirs/{1,2,31,1d,2d/{1subdir,2,start-with-digit},n3,jeka,by,1by,88,u6u,dir,search/{sub,2subdir}} Создадим еще несколько файлов, чтобы усложнить задачу поиска каталогов: touch dirs/{10..13}.file touch dirs/{21,33,string}.txt Для создания "тестовых" директорий и файлов мы использовали:
Давайте проверим что у нас получилось на данный момент по структуре: % mkdir -p dirs/{1,2,31,1d,2d/{1subdir,2,start-with-digit},n3,jeka,by,1by,88,u6u,dir,search/{sub,2subdir}} % touch dirs/{10..13}.file % touch dirs/{21,33,string}.txt % tree dirs dirs ├── 1 ├── 10.file ├── 11.file ├── 12.file ├── 13.file ├── 1by ├── 1d ├── 2 ├── 21.txt ├── 2d │ ├── 1subdir │ ├── 2 │ └── start-with-digit ├── 31 ├── 33.txt ├── 88 ├── by ├── dir ├── jeka ├── n3 ├── search │ ├── 2subdir │ └── sub ├── string.txt └── u6u 19 directories, 7 files Expected data
Как видно по выводу утилиты 1by 1 88 31 2d 1d 2 Напишем команду для поиска директорий, начинающихся с цифры на bash с использованием unix утилиты find
Ниже рассмотрим подробней, что сделали на скриншоте. Зайдем в директорию, в которой хотим делать поиск, затем воспользуемся утилитой find. cd dirs
% find . . ./13.file ./12.file ./by ./1by ... #many other... ./string.txt Давайте сокращать вывод, добавив regex для матчинга имен, начинающихся с цифры:
% find . -regex './[0-9].*' ./13.file ./12.file ./1by ./1 ./88 ./31 ./21.txt ./11.file ./2d ./2d/1subdir ./2d/start-with-digit ./2d/2 ./33.txt ./10.file ./1d ./2 Уже лучше!
Добавив оба флага в find, получаем следующий вывод директорий первого уровня:
% find . -regex './[0-9].*' -maxdepth 1 -type d ./1by ./1 ./88 ./31 ./2d ./1d ./2
То, что нужно! Теперь приукрасим вывод директорий, убрав из имени директории вот эту часть пути "./". Опция
% find . -regex './[0-9].*' -maxdepth 1 -type d -execdir echo {} ';' 1by 1 88 31 2d 1d 2 Готово, итого финальная команда поиска имен директорий, начинающихся с цифры:
Данный вариант подходит для поиска директорий внутри конкретной директории, без рекурсивного поиска. |
|||
|