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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

Оффлайн Aleks.Sinjavin

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

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

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

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

Оффлайн ALiEN175

  • Администратор
  • Старожил
  • *
  • Сообщений: 6121
  • Vamos a Bailar
    • Просмотр профиля
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 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Aleks.Sinjavin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 86
    • Просмотр профиля
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

  • Администратор
  • Старожил
  • *
  • Сообщений: 6121
  • Vamos a Bailar
    • Просмотр профиля
find -name '*.doc' | while read file; do
    printf "$file"
    abiword --to=txt --to-name="$file".txt "$file"
done
ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

 

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