【问题标题】:Converting Filename to Filename_Inode将文件名转换为 Filename_Inode
【发布时间】:2014-12-10 22:30:49
【问题描述】:

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

我已经弄清楚如何通过创建以下 4 个变量来显示这一点

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

space="_" #用来放在文件名和bname之间

bname=$(basename $1) #获取文件的基本名称,不包括目录等

bnamespaceinode=$bname$space$inode #将3个值合并为一个变量

echo "$bnamespaceinode #prints filename_inode 到窗口

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

我认为我用于 mv 和 cv 命令的语法没有任何问题,所以我想我需要将 3 个变量连接到一个新文件中或使用第一个变量的结果然后追加其他 2 个到那个文件?

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

谢谢

【问题讨论】:

  • 如果你只是举一个例子来说明你有什么,你期望什么,会更容易。也请包括源目录和目标目录。

标签: unix filenames cp mv inode


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2010-11-06
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多