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


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

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

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

Оффлайн Aleks.Sinjavin

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

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

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

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

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6918
  • Luck Tales
    • Просмотр профиля
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 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 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 »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6918
  • Luck Tales
    • Просмотр профиля
find -name '*.doc' | while read file; do
    printf "$file"
    abiword --to=txt --to-name="$file".txt "$file"
done
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

 

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