2017-02-14 3 views
0

Я узнал, как использовать вчера скрипт, который отображает все файлы, содержащие введенный текст.Linux bash: найти папки, содержащие определенный текст

echo "enter serial number" 
read number 

matchfiles=(`find /home/data_files -maxdepth 1 -name "*$number*" -type f -exec basename {} \;`) 

COUNTER=${#matchfiles[@]} 

echo serial number data folder found: 
until [ $COUNTER -lt 0 ]; do 
echo ${matchfiles[$COUNTER]} 
let COUNTER-=1 
done 

Если номер 12 введен он будет выводить все файлы с номером 12, содержащегося в имени файла»

Для Ex:

enter serial number 
12 
file12.fee 
12file.foo 
file.12 

Im ищет способ сделать точный То же самое, но с каталогами

поэтому выход будет

enter serial number 
12 
folder12 
12folder 

Мне нужны имена папок, содержащиеся в массиве, поэтому они могут использоваться позже для управления данными внутри них.

+0

'-type d' ограничит поиск именами dir. – karakfa

+0

@karakfa Конечно ... ха-ха. Спасибо! –

ответ

1
find {path} -name "*$number*" -type d -exec readlink -f {} \; 

если ваш необязательный {путь} является относительным, вы хотите readlink -f чтобы преобразовать относительные пути к абсолютному пути. Возможно, вы захотите добавить обратно -maxdepth, если вы хотите ограничить рекурсивный поиск в пути dir.

Смежные вопросы