Решено:BASH - Пробелы в именах файлов

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Закрыто
dva20
Сообщения: 93
ОС: Debian Lenny

Решено:BASH - Пробелы в именах файлов

Сообщение dva20 »

Есть некий скрипт на bash, который проходит определенные директории, если они превышают заданный размер, то в этом случае они грохаются.
Скрипт генерирует отчет в HTML-файл (Красочный отчет виндузятнегам)
Проблем с оформлением и т.д. - нет

Теперь проблема:

Надо вывести строки в HTML которые имеют в именах пробелы, например:

/home/samba/work/.recycle/user1/Папка пользователя/Файл пользователя.txt

Причем нужно обойти рекурсивно директории в папке "user1" и выбрать чистые имена файлов, то есть без конкретных путей до папки user1 или хотябы просто имена файлов, без путей.

Значит по форуму не нашел, gooooogle курил, man'ы тоже. Пробовал так:


Код: Выделить всё

   for filename in *                    #Смотрим все файлы в текущем каталоге
     do
    if [ -f "$filename" ]; then           #Если это файл ...
      fname=`basename "$filename"`    #Оставляем только имя файла, без пути
      echo "$fname<br>"
    fi
     done


В это случае не могу пройтись рекурсивно от директории "user1"

Пробывал и так:

Код: Выделить всё

cd "$U_RECYCLE_PATH"

ls -lRhAb | awk '{ print "<tr bgcolor=F0F0F0><td>Файл: " $9 " </td><td>Размер: " $5  "</td></tr>"}'


Пробовал и другие варианты, однако не получается у меня сделать: "Строка с пробелами <BR>"

Если плохо изъяснил проблему отвечу по вопросам. Спасибо.

Файл-скрипт прилагаю к просмотру....

Строго не судите за ламерство, типа начинающий :)
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Решено:BASH - Пробелы в именах файлов

Сообщение d_n_k »

find -exec ?
еще можно sed'ом пользоваться для выделения имени файла(даж если оно с пробелами)
все сказанное есть имхо...
Спасибо сказали:
dva20
Сообщения: 93
ОС: Debian Lenny

Re: Решено:BASH - Пробелы в именах файлов

Сообщение dva20 »

Не понял чего нужно запускать - find -exec ?

Пример, плиз...
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга
Контактная информация:

Re: Решено:BASH - Пробелы в именах файлов

Сообщение madskull »

Да хоть так:

Код: Выделить всё


ls | while read filename
do
    if [ -f "$filename" ]; then           #Если это файл ...
      echo "$filename<br>"
    fi
done


или так:

Код: Выделить всё

find * -maxdepth 0 -type f -printf "%f<br>\n"
ArchLinux / IceWM
Спасибо сказали:
dva20
Сообщения: 93
ОС: Debian Lenny

Re: Решено:BASH - Пробелы в именах файлов

Сообщение dva20 »

СПАСИБО madskull !!!! :D

Но вот рекурсией по каталогам не бежит начиная с текущего:

ls -R | while read filename
do
if [ -f "$filename" ]; then #Если это файл ...
echo "$filename<br>"
fi
done

Ни че немогу понять...
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено:BASH - Пробелы в именах файлов

Сообщение sash-kan »

dva20
find . -type f -printf "%f<br>\n"
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
dva20
Сообщения: 93
ОС: Debian Lenny

Re: Решено:BASH - Пробелы в именах файлов

Сообщение dva20 »

Смешно, но у меня не работает, find . -type f -printf "%f<br>\n"

Делаю так:

directory="/home/samba/.recycle/user1"

find "$directory" -type f -printf "%f<br>\n"


Пишет не правильные аргументы, типа должно быть: find [путь...] [выражение]

Вообщем, какой-то писец, не могу разобраться... :mellow:

man'ы не помогают....
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено:BASH - Пробелы в именах файлов

Сообщение sash-kan »

dva20
а просто:
directory="/home/samba/.recycle/user1"; find $directory
отрабатывает?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
dva20
Сообщения: 93
ОС: Debian Lenny

Re: Решено:BASH - Пробелы в именах файлов

Сообщение dva20 »

dva20
а просто:
Цитата
directory="/home/samba/.recycle/user1"; find $directory
отрабатывает?


Так работает. :wacko:
Спасибо сказали:
dva20
Сообщения: 93
ОС: Debian Lenny

Re: Решено:BASH - Пробелы в именах файлов

Сообщение dva20 »

Все тему можно закрыть, так как есть решение, сделал так и все ОК:

Код: Выделить всё



find "$U_RECYCLE_PATH" -type f | while read filename    #Ищем все файлы начиная с указанного пути
                                    do
                              filename=`basename "$filename"`#Выделяем из пути только имя файла
                              echo "<tr bgcolor=\"F0F0F0\"><td>$filename</td></tr>"
                                done


Ну и если пригодится кому-нибудь скриптик под SAMB'у, выставляю всем желающим под лицензией GPLv2
Спасибо сказали:
Закрыто