Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: BASH: Как вывести список каталогов? (папок) в скрипте  (Прочитано 23099 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн БТР

  • Заслуженный пользователь
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6293
    • Просмотр профиля
:-) НЕ КАТИТ! :-)
Не хочу!
Да и не могу!
скрипт в студию!

подумайте над своим поведением, избалованный ребёнок.

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн Panic! At the Kernel

  • Активист
  • *
  • Сообщений: 700
    • Просмотр профиля
забанить в угол

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
for dir in /mnt/win_d/Pictures/*; do
    [ -d "$dir" ] && rar a -u "/mnt/win_e/backup/$(basename $dir).rar" "$dir"
done

Оффлайн FrankiAm

  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
Отвыкать пора от всяких бяк в названиях папок/файлов...
2owl5053: чего за ключ -е в grep? Чего дает?
1. Sempron 3000+ (старенький, но работает :)) + Ubuntu 9.04
2. Dell Inspiron N5110 (i3-2350, HD3000 + gt525m 1Gb, 4Gb, 500Gb) + Ubuntu 13.04.

Оффлайн MaSsoL

  • Активист
  • *
  • Сообщений: 519
    • Просмотр профиля
Use  PATTERN  as  the  pattern, то есть строка идущая за -е принмается как критерий поиска, а не как ключ или т.п., - экранирование.
man grep | grep -A 4  -e --regexp
-----
убрал кавычки
« Последнее редактирование: 15 Января 2011, 10:44:21 от MaSsoL »
In Console We Trust!

Оффлайн FrankiAm

  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
grep -e "grep "\""И в чем разница?
1. Sempron 3000+ (старенький, но работает :)) + Ubuntu 9.04
2. Dell Inspiron N5110 (i3-2350, HD3000 + gt525m 1Gb, 4Gb, 500Gb) + Ubuntu 13.04.

Оффлайн kit_oz

  • Участник
  • *
  • Сообщений: 122
    • Просмотр профиля
разница лишь в том, что мне так удобнее, не? точно так же мне удобнее писать в несколько строк, чем через точку с запятой - кто как привык тот так и пишет
ls -FQ /mnt/win_d/Pictures/ | grep -e ./ | tr -d /по сути выдает в удобочитаемом для for виде. т.е каждое слово взято в двойные кавычки (для пробелов в названиях)
но на деле у меня при подстановке эти кавычки идут как часть строки, а не как экранирование папок..
может кто знает как заставить for их правильно обрабатывать?

Пользователь решил продолжить мысль 15 Января 2011, 12:32:23:
for dir in /mnt/win_d/Pictures/*
do
[ -d "$dir" ] && rar a -u "${dir/mnt\/win_d\/Pictures/mnt/win_e/backup}" "$dir"
done
а вот так вроде работает..
« Последнее редактирование: 15 Января 2011, 12:32:23 от kit_oz »
молчание не всегда доказывает присутствие ума, но доказывает отсутствие глупости

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Отвыкать пора от всяких бяк в названиях папок/файлов...
Все дружно пошли отвыкать, ага.
Если скрипт не учитывает пробелов в путях -- это, пардон, хреновый скрипт.

Оффлайн FrankiAm

  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
разница лишь в том, что мне так удобнее, не?
Ну, то есть, вся разница в привычке. Я просто думал может отличия какие-то есть...

Все дружно пошли отвыкать, ага.
Если скрипт не учитывает пробелов в путях -- это, пардон, хреновый скрипт.
Зачем "все"? Некоторые уже ходили. Отвыкли - помогло :)
Если машина едет меньше 60км/час - хреновая машина? А если больше -тоже хреновая?
1. Sempron 3000+ (старенький, но работает :)) + Ubuntu 9.04
2. Dell Inspiron N5110 (i3-2350, HD3000 + gt525m 1Gb, 4Gb, 500Gb) + Ubuntu 13.04.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
FrankiAm, никто в здравом уме не станет переименовывать все поступающие ему на компьютер файлы, чтобы удалить из них пробелы.

Оффлайн FrankiAm

  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
Ну в общем да, но только тут речь идет не о всех, попавших на компьютер, а лишь об одной папке.
1. Sempron 3000+ (старенький, но работает :)) + Ubuntu 9.04
2. Dell Inspiron N5110 (i3-2350, HD3000 + gt525m 1Gb, 4Gb, 500Gb) + Ubuntu 13.04.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
По-любому, экранировать пробелы будет быстрее и более правильно, чем заниматься переименовыванием, особенно при неоднократном использовании скрипта.

Оффлайн kit_oz

  • Участник
  • *
  • Сообщений: 122
    • Просмотр профиля
более унифицированный вид :)
or='/mnt/win_d/Pictures'
bu='/mnt/win_e/backup'
for dir in $or/*
do
[ -d "$dir" ] && rar a -u "${dir/$or/$bu}" "$dir"
done
а вот экранировать пробелы после ls у меня так и не получилось, потому что for не воспринимает метасимволы при передаче области поиска через переменную.
или так и должно быть?
(Нажмите, чтобы показать/скрыть)
ps а почему rar, а не tar?
молчание не всегда доказывает присутствие ума, но доказывает отсутствие глупости

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
или так и должно быть?
Да, так и должно быть. Кавычки, как часть конструкции не будут восприниматься из содержимого переменной. Если из ls нужно вытянуть, то можно так:
IFS_=$IFS
IFS=$'\n'
for d in $(ls); do
    echo $d
done
IFS=$IFS_

 

Страница сгенерирована за 0.018 секунд. Запросов: 19.