LINUX.ORG.RU

Список файлов из директории


0

1

И еще раз привет.

Нужно вывести список файлов в файл ohlol.txt в формате file1,file,file3 т.е. без расширения.

Суть в том, что у file1 есть три расширения — file1.frm, file1.MYD, file1.MYI (да, бэкапы таблиц). Надо вывести только одно, например *.frm

М… в общем, вывести список файлов из директории 111 в отдельный файл в формате file1,file2,file3 беря только расширения *.frm.

Маны курил, дошел только до ls -R 111 > 111.txt, что не совсем подходит.

Заранее признателен за помощь нубу :3



Последнее исправление: lolwut (всего исправлений: 1)

ls | sed 's/\..*$//' | sort -u > ohlol.txt

Дальше разберетесь

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

забыл про user line breaks:

for i in *.frm
do
basename «$i» .frm >> 111.txt
done

anonymous
()
Ответ на: комментарий от pekmop1024

если в именах файлов возможны пробелы придется усложнить, я делаю так чтоб наверняка: ls -1 111 | grep ".frm$" | while read line;do echo «$line» | sed -e 's/.frm$//g' >> 111.txt;done

erfea ★★★★★
()
Ответ на: комментарий от pekmop1024

точно, это в цикле for вызывает траблы)))) ЗЫ что каcаемо точки, потому и юзаю sed, да еще точно обозначив конец строки «$»

erfea ★★★★★
()
Ответ на: комментарий от erfea

у ТС это файлы mysql, поэтому там вряд ли что левое в имени встретится...

pekmop1024 ★★★★★
()
Ответ на: комментарий от Eddy_Em

Ему еще запятые подавай :) так что тут надо построчно обрабатывать вывод, либо делать замену перевода строки на запятую в файле

pekmop1024 ★★★★★
()
Ответ на: комментарий от lolwut

А как вывести в строчку и через запятую перечисление сделать? А то с новой строчки выводит.

правка моего варианта:ls -1 111 | grep ".frm$" | while read line;do echo «$line» | sed -e 's/.frm$//g' | tr «\n» ", " >> 111.txt;done

erfea ★★★★★
()
Ответ на: комментарий от pekmop1024
ls *.frm | awk -F. '{print $1}' | paste -s -d ',' > ohlol.txt

При условии наличия только одной точки в имени файла.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Я так и делаю, правда в винде, но неудобно же — бд очень много (75 штук), вот и хотелось бы сразу вывести. Осталось только запятую добавить, с новой строкой решилось благодаря Eddy Em %)

lolwut
() автор топика
Ответ на: комментарий от erfea

Аригато, то что нужно ^___________^

@pekmop1024 думаю вариант erfea поудобнее будет, ибо в каталоге есть еще директории под каждую бд, поэтому можно спокойно из mysql работать, не заходя в отдельную директорию.

Всем спасибо, премного благодарен :3

lolwut
() автор топика
Ответ на: комментарий от lolwut

> в каталоге есть еще директории под каждую бд

про вложенность в первоначальной задаче вопрос не стоял :)

pekmop1024 ★★★★★
()
Ответ на: комментарий от lolwut

думаю вариант erfea поудобнее будет, ибо в каталоге есть еще директории под каждую бд

всегда рад помочь, коли время есть)))

erfea ★★★★★
()
echo *.frm | sed 's/\.[^.]* /,/g; s/\.[^.]*$//'
sdio ★★★★★
()
Ответ на: комментарий от Lumi

Точно, блин... вот что значит не проснулся, когда писал :)

pekmop1024 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.