У меня есть папка public
, которая включает в себя .html
и не .html
файлы в своей корневой папке и подпапках.Мне нужно переместить все файлы, кроме .html
, в подпапку папки public
, например, в public/assets
, сохранив их полный путь.
Пока что я получил что-то вроде этого:
mkdir -p public/assets
find public -type f -not -name "*.html" -print0 | xargs -0I{} mv {} public/assets/
Он не работает правильно, потому что он не перемещает файлы с полным путем, например, если есть файл public/foo/bar.js
, он будет перемещен в public/assets/bar.js
, а не в public/assets/foo/bar.js
.
Я также попробовал другую версию:
mkdir -p public/assets
find public -type f -not -name "*.html" | sed 's#\(public\)\(.*\)#\1\2 public/assets\2#' | xargs -I% mv %
, но он жалуется на неправильный синтаксис команды mv
.Я передаю ему только один параметр, но после запуска sed
он состоит из 2 путей, разделенных одним пробелом, поэтому я надеялся, что он будет обрабатывать его как 2 параметра.
Было бы также здорово, если быспособ удалить пустые папки после перемещения всех файлов, но это не обязательно.