У меня ограниченная оболочка bash на моем NAS и много файлов, которые содержат char ~
в имени файла. Например, у меня есть файл в , 2018/10/example~1.jpg
и мне нужно переместить и переименовать его в allFiles/2018-10-example_1.jpg
.
Мне нужно заменить ~
на _
и добавить путь вместо -
в /
имени файла.
Не могли бы вы мне помочь?
P.S. Только файлы с расширением .jpg
/ .png
/.mov
решение1
У меня нет QNAP, но я думаю, что его оболочка на самом деле BusyBox. Это должно работать как с BusyBox, так и с bash (хотя с bash вам также нужно установить find+cut+awk):
Предположим, что каталоги года (например, «2018») и каталоги «allFiles» находятся на одном уровне, и этот уровень является вашим текущим рабочим каталогом в вашей оболочке:
find . -name '*.jpg' | cut -c3- | awk '{ newname=$0; gsub(/~/, "_", newname); gsub(/\//, "-", newname); gsub(/^/, "allFiles/", newname); print "mv " $0 " " newname; }'
Это создаст набор команд для перемещения всех ваших .jpg файлов. Сначала проверьте команды, чтобы убедиться, что они разумны. Затем запустите их, добавив "| sh" в конец указанной выше команды.
Затем замените «*.jpg» в приведенном выше примере на другое расширение файла, которое вы хотите обработать, и повторите.