Unix 将文件名转换为文件名\u Inode

Unix 将文件名转换为文件名\u Inode,unix,filenames,cp,mv,inode,Unix,Filenames,Cp,Mv,Inode,我正在编写我的第一个脚本,它接收一个文件并将其移动到另一个文件夹,只是我想将该文件的文件名更改为filename\u inode,而不仅仅是filename,以防存在同名文件 我已经通过创建以下4个变量找到了如何显示这一点 inode=$(ls-i$1 | cut-c1-7)#列出用户键入的文件,从中剪切inode 空格=“35;”#用于在文件名和bname之间插入 bname=$(basename$1)#获取不带目录的文件的basename等 bnamespaceinode=$bname$sp

我正在编写我的第一个脚本,它接收一个文件并将其移动到另一个文件夹,只是我想将该文件的文件名更改为filename\u inode,而不仅仅是filename,以防存在同名文件

我已经通过创建以下4个变量找到了如何显示这一点

inode=$(ls-i$1 | cut-c1-7)#列出用户键入的文件,从中剪切inode

空格=“35;”#用于在文件名和bname之间插入

bname=$(basename$1)#获取不带目录的文件的basename等

bnamespaceinode=$bname$space$inode#将3个值组合成一个变量

echo“$bnamespaceinode”将文件名inode打印到窗口中

所以底部的回音显示了我想要的filename_inode,除了现在我尝试使用mv或cp移动它时,我得到了以下错误

我不认为我用于mv和cv命令的语法有任何问题,因此我认为我需要将这3个变量连接到一个新文件中,或者使用第一个变量的结果,然后将另外2个变量附加到该文件中

我已经尝试了以上两种方法,但仍然没有任何运气,有什么想法吗


谢谢

如果没有更清楚的例子,我想这可以奏效:

$TARGETDIR=/my/target/directory
mv $1 $TARGETDIR/$(basename "$1" | sed 's/_.*/_inode/')

如果你只是举一个例子来说明你拥有什么,以及你期望得到什么,那就容易多了。请包括源目录和目标目录。