Автор |
Сообщение |
ProFfeSsoRr Гуру
|
Добавлено: Сб 11-07-09 : 17-46 Заголовок сообщения: Найти файлы типа doc без расширения |
|
|
Восстановил я нечаянно отформатированный раздел. Имею тучу файлов с рандомными именами. Надо найти среди них все файлы MS Word (ака doc) и закинуть в одну папку. Идеи? |
|
 |
|
 |
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 искать не умеет, а чем еще искать так я вообще не в курсе  |
|
 |
|
 |
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
=)) |
|
 |
|
 |
ProFfeSsoRr Гуру
|
Добавлено: Вс 12-07-09 : 11-29 Заголовок сообщения: |
|
|
konst-t ну-ну, заголовок-то прочти - "без расширения". Так что фильтр - * и ничего более. А просто текстовых файлов там уйма, делал я такой поиск, еще и минимальный размер ставил от 5 Кб, чтобы уж совсем мелкие конфиги не попадались, все равно примерно 2 тысячи результатов получилось (когда документов должно быть около 200-300). |
|
 |
|
 |
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" к каждому такому файлу. |
|
 |
|
 |
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 файлов! |
|
 |
|
 |
ProFfeSsoRr Гуру
|
|
 |
|
 |
Richard Ferlow Гуру
Предупреждений : 2
|
Добавлено: Ср 15-07-09 : 19-42 Заголовок сообщения: |
|
|
ProFfeSsoRr
Иди покупай свитОр =) |
|
 |
|
 |
ProFfeSsoRr Гуру
|
Добавлено: Ср 15-07-09 : 20-41 Заголовок сообщения: |
|
|
Richard Ferlow не-не-не, я ток как на аватарке  |
|
 |
|
 |
|