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


Автор Тема: Поиск файлов с расширением  (Прочитано 610 раз)

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

Оффлайн Sergeys_K

  • Автор темы
  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Поиск файлов с расширением
« : 04 Январь 2014, 17:56:26 »
Привет всем. Я новичок. Готовлюсь к экзамену - у меня вопрос следующего рода:
Задача - нужно распаковать файлы в текущей директории, в зависимости от расширения применить команду.

пишу что-то типа:

#!/bin/bash
for file in *
do
 if $file "содержит *.tar.gz"
 then
 tar -zxvf $file
  elif $file "содержит *.bz2"
  then tar -jxvf $file
 else
 echo "Non archive files..."
 fi
done

Вопрос - как написать содержит *.bz2 или *.tar.gz ? Спасибо большое заранее за ответ.

Я конечно написал один, и он работает, но мне кажется это очень неправильный подход к написаню скриптов
#!/bin/bash
#Рабочий
tgz=`find . -name *.tgz`
tr=`find . -name *.tar.gz`
bz2=`find . -name *.bz2`

for line in $bz2
do
 tar -jxvf $line
done

for line in $tgz
do
 tar -zxvf $line
done

for line in $tr
do
 tar -zxvf $line
done

 

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1022
    • Просмотр профиля
Re: Поиск файлов с расширением
« Ответ #1 : 05 Январь 2014, 05:54:25 »
А обязательно в один цикл всё затолкать? Я бы сделал так:
for f in `ls *.tar.gz`; do
    tar zxfv $f
done

for f in `ls *.tar.bz2`; do
    tar jxfv $f
done


Оффлайн anonymous.ru

  • Участник
  • *
  • Сообщений: 206
    • Просмотр профиля
Re: Поиск файлов с расширением
« Ответ #2 : 05 Январь 2014, 09:43:51 »
MooSE, в вашем примере ls и апостров не нужны.
Sergeys_K,нормальный скрипт, только find будет искать еще и по подкаталогам.
Оба скрипта не будут работать, если в именах файлов будут пробелы.
Отправлено с моего Windows Phone

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Поиск файлов с расширением
« Ответ #3 : 06 Январь 2014, 18:01:47 »
Исправил косяки замеченные anonymous.ru:
find . -iname '*.tar.gz' | while read f; do tar zxfv "$f"; done

 

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