Преобразование имени файла в Filename_Inode
Я пишу свой первый скрипт, который берет файл и перемещает его в другую папку, за исключением того, что я хочу изменить имя файла на filename_inode вместо простого имени файла, если есть какие-либо файлы с таким же именем
Я понял, как это показать, создав следующие 4 переменные
inode=$(ls -i $1 | cut -c1-7) # перечисляет файл, который вводит пользователь, вырезает из него индекс
space="_" # используется для вставки между именем файла и именем bname
bname = $ (basename $ 1) # получает базовое имя файла без каталога и т. д.
bnamespaceinode=$bname$space$inode # объединяет 3 значения в одну переменную
echo "$bnamespaceinode #prints filename_inode в окно
Таким образом, нижний эхо-файл показывает filename_inode, что я и хочу, за исключением того момента, когда я пытаюсь переместить это с помощью mv или cp, я получаю следующие ошибки
Я не думаю, что что-то не так с синтаксисом, который я использую для команд mv и cv, и поэтому я думаю, что мне нужно объединить 3 переменные в новый файл или использовать результат первого, а затем добавить другие 2 в этот файл?
Я пробовал оба вышеперечисленных, но все еще не повезло, есть идеи?
Спасибо
1 ответ
Без более четких примеров, я думаю, это может сработать:
$TARGETDIR=/my/target/directory
mv $1 $TARGETDIR/$(basename "$1" | sed 's/_.*/_inode/')