Когда путь не начинается с /
, он является относительным. Относительный путь обычно относится к текущему рабочему каталогу (, за исключением целей символических ссылок, которые относятся к родителю символической ссылки ). .
— запись в любом каталоге, указывающая на себя.
mv -v fickur/./klockor/armbandsur/digital
совпадает с
mv -v fickur/ klockor/armbandsur/digital
Если ваш текущий каталог является первым fickur
, в нем нет каталога klockor
, так что это не сработает. В родительском каталоге fickur
также нет каталога klockor
. Там будет один в родительском его родительском каталоге, но здесь вам не нужно заходить так далеко, если вы хотите переместить его в подкаталог вашего родительского каталога. armbandsur
является подкаталогом родителя fickur
, так что вы можете просто сделать
mv -v fickur../armbandsur/digital
..
здесь является родительским каталогом текущего каталога.
Обратите внимание, что если структура, которую вы описываете выше, включает символические ссылки, например, если fickur
является не реальным каталогом, а символической ссылкой, тогда ..
в каталоге, на который он указывает, может указывать на другой каталог. чем klockor
. Кроме того, если второй fickur
также является символической ссылкой и указывает на относительный путь, то при перемещении в другое место эта ссылка, вероятно, разорвется.
Вы можете извлечь числа путем раскрытия параметров. ${f:5:2}
выбирает два символа из пятой позиции переменной $f
.
#! /bin/bash
for f in aula-??.?.mp4 ; do
num=${f:5:2}
mv "$f" Aula"$num"/
done
Чтобы извлечь две цифры из имени файла, если позиция не фиксирована, используйте
#! /bin/bash
for f in *.mp4 ; do
if [[ $f =~ ([0-9][0-9]) ]] ; then
num=${BASH_REMATCH[1]}
mv "$f" Aula"$num"/
else
echo "Can't extract number form '$f'" >&2
fi
done