Буква Word & Документы Excel перемещались на сервере, когда процесс завершался до его завершения. В результате у нас осталось несколько прекрасных файлов с расширением .tmp, и нам нужно переименовать эти файлы обратно в соответствующее расширение .xlsx или .docx.Bash - Рекурсивно переименовывать файлы «.tmp»
Вот мой текущий код, чтобы сделать это в Bash:
#!/bin/sh
for i in "$(find . -type f -name *.tmp)"; do
ft="$(file "$i")"
case "$(file "$i")" in
"$i: Microsoft Word 2007+")
mv "$i" "${i%.tmp}.docx"
;;
"$i: Microsoft Excel 2007+")
mv "$i" "${i%.tmp}.xlsx"
;;
esac
done
кажется, что в то время как это делает поиск рекурсивно, это делает только 1 файл. Если он находит начальное совпадение, он не переходит к переименованию остальных файлов. Как я могу получить это для правильной петли через каталоги рекурсивно, если он не делает всего 1 файл за раз?
Не используйте 'find' таким образом. См. [ParsingLs] (http://mywiki.wooledge.org/ParsingLs) для подробного объяснения причин. – ghoti