1

В настоящее время я сортирую файлы, которые я восстановил из поврежденной файловой системы. Теперь у них есть имена файлов, которые выглядят примерно так: f123123123.xls

Если я запускаю: файл "f123123123.xls", он дает мне много информации, а иногда даже последнюю сохраненную дату.

Пример:

./recup_dir.89/f111841280.xls: файл составного документа V2 Document, Little Endian, Os: Windows, версия 1.0, кодовая страница: -535, номер редакции: 5, общее время редактирования: 09:58:37, последняя печать: Ср 9 сентября 11:57:04 2015, время создания / дата: чт 3 сентября 03:15:36 2015, время последнего сохранения / дата: понедельник, 19 октября 14:28:03 2015

Как выбрать последнюю сохраненную дату и использовать ее для переименования моего файла во что-то вроде: Oct-19-2015.xls?

1 ответ1

0

Мы можем связать несколько команд вместе, чтобы сделать это. Я собираюсь в этом примере записать переименованные файлы в другой каталог, их можно переместить куда угодно, но мне лично нравится хранить их отдельно на случай, если у меня будет несколько неудачных попыток.

mkdir renamed
for recovered in recup_dir.89/*xls; do
    new_name=$(date +'%b-%d-%Y' -d "$(file "$recovered"| grep -Po 'Last Saved Time/Date:\K[^,]*')")
    if [ -n "$new_name" ]; then
        mv "$recovered" "renamed/$new_name.xls"
    fi
done

это зациклит все файлы xls в каталоге (так как эта информация не будет отображаться во всех файлах). Для каждого из них он запускает команду file и использует регулярное выражение стиля GNU grep perl, чтобы найти, где появляется Last Saved Time/Date: затем получает только время после этого. Затем мы будем использовать команду date чтобы переформатировать это время так, как вы хотите, поэтому нам не нужно много манипулировать отдельными полями в выводе.

Это даст нам дату в формате Oct-19-2015 и мы затем используем это значение в команде mv , как и следовало ожидать, но только в том случае, если мы действительно вернули дату. Если что-то не вернулось, не пытайтесь переименовать файл (на случай, если с предыдущей цепочкой команд не все получится правильно).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .