将文件名转换为Filename_Inode

时间:2014-10-15 18:22:26

标签: unix filenames cp mv inode

我正在编写我的第一个脚本,它接受一个文件并将其移动到另一个文件夹,除了我想将文件的文件名更改为filename_inode而不仅仅是文件名,因为有任何同名的文件

我已经想出了如何通过创建以下4个变量来显示它

  

inode = $(ls -i $ 1 | cut -c1-7)#lists用户输入的文件,从中删除inode

     

space =“_”#用于放入文件名和bname

之间      

bname = $(basename $ 1)#gets没有目录等的文件的基本名称

     

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

     

回显“$ bnamespaceinode #prints filename_inode到窗口

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

enter image description here enter image description here

我不认为我用于mv和cv命令的语法有什么问题,所以我想我需要将3个变量连接成一个新文件或使用第一个结果然后追加那个文件的另外2个?

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

由于

1 个答案:

答案 0 :(得分:1)

如果没有更清晰的例子,我想这可行:

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