adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Найти файлы типа doc без расширения
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)*NIX OS
Автор Сообщение
ProFfeSsoRr
Гуру
СообщениеДобавлено: Сб 11-07-09 : 17-46    Заголовок сообщения: Найти файлы типа doc без расширения Ответить с цитатой

Восстановил я нечаянно отформатированный раздел. Имею тучу файлов с рандомными именами. Надо найти среди них все файлы MS Word (ака doc) и закинуть в одну папку. Идеи?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
BorPas
Девелопер
СообщениеДобавлено: Сб 11-07-09 : 18-16    Заголовок сообщения: Ответить с цитатой

у всех микрософт форматов (doc,xls,ppt,msi и т.д.) в начале файла D0 CF 11 E0 A1 B1 1A E1 (стандартная шапка файла IStream)

запускаем поиск в тотале



можно ещё потом среди найденныйх по текстовой подстроке поискать "Word.Document." - doc, "Excel.Sheet." - xls и т.п.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
ProFfeSsoRr
Гуру
СообщениеДобавлено: Сб 11-07-09 : 18-31    Заголовок сообщения: Ответить с цитатой

Ну я под линукс софт имел в виду, а не тотал, т.к. аналог тотала Krusader по hex искать не умеет, а чем еще искать так я вообще не в курсе Sad
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
BorPas
Девелопер
СообщениеДобавлено: Сб 11-07-09 : 18-46    Заголовок сообщения: Ответить с цитатой

BorPas писал(а):
по текстовой подстроке поискать "Word.Document." - doc, "Excel.Sheet." - xls и т.п.

в конце концов тотал скачай и под вайном запусти
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
konst-t
Форумчанин
СообщениеДобавлено: Вс 12-07-09 : 03-28    Заголовок сообщения: Ответить с цитатой

ProFfeSsoRr писал(а):
Надо найти среди них все файлы MS Word (ака doc)
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Вс 12-07-09 : 09-59    Заголовок сообщения: Ответить с цитатой

konst-t
=))
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ProFfeSsoRr
Гуру
СообщениеДобавлено: Вс 12-07-09 : 11-29    Заголовок сообщения: Ответить с цитатой

konst-t ну-ну, заголовок-то прочти - "без расширения". Так что фильтр - * и ничего более. А просто текстовых файлов там уйма, делал я такой поиск, еще и минимальный размер ставил от 5 Кб, чтобы уж совсем мелкие конфиги не попадались, все равно примерно 2 тысячи результатов получилось (когда документов должно быть около 200-300).
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ProFfeSsoRr
Гуру
СообщениеДобавлено: Ср 15-07-09 : 11-41    Заголовок сообщения: Ответить с цитатой

Так, у меня снова дошли руки до этого.
1) wine и total commander - дичайшее извращение: комп, на котором мне это надо, очень дохлый
2) konst-t файлы офиса не относятся к текстовым файлам, они application/msword ака application/vnd.ms-office (как выводит их mime-type команда file)
3) собсна, по идее команда file мне и нужна. Допер до строки вида "file -k --mime-type /test/* /test/.* | grep application/vnd.ms-office", получающей список всех файлов внутри папки test, но не внутри её подпапок. Вот сижу и думаю, как же получить список всех файлов еще и из подпапок, и как далее скриптом вытаскивать из каждой строки все, что идет до ":" (т.к. это будет полный путь к файлу) и дописывать ".doc" к каждому такому файлу.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ProFfeSsoRr
Гуру
СообщениеДобавлено: Ср 15-07-09 : 12-11    Заголовок сообщения: Ответить с цитатой

Хм, сваял такой вот скрипт:
Код:
cd ${pwd}
find -type f  | sort -n |while read filename;
do
    echo "Check --> "${filename}
    if (file -k --mime-type ${filename} | grep application/vnd.ms-office > /dev/null); then
        cp $filename /tmp/docs/$(echo  $filename |sed -e "s|[^/]*/||g")".doc"
        echo "Copy --> "${filename}
    fi
done

exit 0

Он че-то нашел, но далеко не все. Ничего не понимаю оО Убрал "sort -n" - стал находить чуть побольше. Но все равно мало. Тестил на папке с 2000 файлов, при этом в консоль, по идее, мне должно 2000 раз вывести слово "Check -->", но вывелось оно всего раз 20-30. Пробовал убирать опцию -k у file (т.к. по логике она не нужна, просто забыл убрать её после тестов) - ничего не изменилось. Самое-то забавное, что "find -type f" нормально выводит все 2000 файлов!
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ProFfeSsoRr
Гуру
СообщениеДобавлено: Ср 15-07-09 : 18-16    Заголовок сообщения: Ответить с цитатой

Код:
#!/bin/bash
#

cd /path
find . -type f -exec file --mime-type '{}' \; | awk 'BEGIN {FS=":"} /application\/msword/ {print $1}' | xargs -I@ echo @ |while read filename
do
        cp "${filename}" "/tmp/docs/$(echo  ${filename} |sed -e "s|[^/]*/||g")".doc""
        echo "Copy --> "${filename}
done

exit 0


Вот так вот оно делается Smile
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Ср 15-07-09 : 19-42    Заголовок сообщения: Ответить с цитатой

ProFfeSsoRr
Иди покупай свитОр =)
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ProFfeSsoRr
Гуру
СообщениеДобавлено: Ср 15-07-09 : 20-41    Заголовок сообщения: Ответить с цитатой

Richard Ferlow не-не-не, я ток как на аватарке Wink
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)*NIX OS Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы