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