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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Скрипт bash неверно выводит имена файлов  (Прочитано 95 раз)

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

Оффлайн Aleks.Sinjavin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
#!/bin/bash

f=`find -name \*.doc`
for file in $f
do
  printf "$file"
done

Bash реагирует на пробелы и выводит каждое слово с новой строки. Нужно с новой строки выводить каждый файл. Как сделать?

Если нужно работать с найденными файлами пишет файл не найден.

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4712
  • Capture the truth
    • Просмотр профиля
find -name '*.doc' -exec printf '%s\n' {} \;


Пользователь добавил сообщение 20 Май 2021, 03:02:58:
for file in *.doc; do
  echo "$file"
done
« Последнее редактирование: 20 Май 2021, 03:02:58 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн Aleks.Sinjavin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
for file in *.doc; do
  echo "$file"
done
Код выше не заходит в каталоги и подкаталоги.

В командной строке
find -name '*.doc' -exec printf '%s\n' {} \;нужно выполнить и вторую команду вместе с первой: abiword зависает на неизвестном мне файле
abiword --to=txt --to-name="$file".txt "$file"
« Последнее редактирование: 20 Май 2021, 15:47:45 от Aleks.Sinjavin »

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4712
  • Capture the truth
    • Просмотр профиля
find -name '*.doc' | while read file; do
    printf "$file"
    abiword --to=txt --to-name="$file".txt "$file"
done
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

 

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