Выберите определенную часть выходных данных и используйте ее для переименования файлов.

Выберите определенную часть выходных данных и используйте ее для переименования файлов.

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

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

Пример:

./recup_dir.89/f111841280.xls: Файл составного документа V2 Document, Little Endian, ОС: 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

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

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команде, как и ожидалось, но только если мы действительно получили дату обратно. Если ничего не получили обратно, не пытайтесь переименовать файл (на всякий случай, если что-то не всегда работает правильно с предыдущей цепочкой команд).

Связанный контент