Unix命令查找文件并重命名扩展名

时间:2016-02-11 17:02:14

标签: unix

我是unix和shell脚本的新手。要求是检查变量中声明的文件路径中的文件。 说,

Filepath=/home/kvs/sample
Filename=abc.xml

现在我需要创建一个命令来检查$ Filepath / $ Filename中的文件。 我需要在文件名中剪切扩展名并将其保存在新变量中。 说,

FNAME=abc

现在我需要在$ FNAME中创建一个空文件(0byte),文件名相同但扩展名为abc.cnf

我已尝试过以下内容。

Filepath=/home/kvs/sample
Filename=abc.xml
FNAME=($Filepath/$Filename | cut -f 1 -d '.'); touch($FNAME .cnf)

帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

这应该有效:

$ [[ -f ${Filepath}/${Filename} ]] && { touch ${Filepath}/${Filename%.*}.cnf ; }
  • 第一部分([[ -f ${Filepath}/${Filename} ]])检查文件是否存在。这将检查"常规文件"我相信 - 这是你正在寻找的。您可以执行其他检查......

  • 第二部分({ touch ${Filepath}/${Filename%.*}.cnf ; })仅在文件存在时执行,并通过将扩展名更改为.cnf来创建与原始文件具有相同路径/基本名称的空文件。

答案 1 :(得分:0)

请尝试man test获取使用if [ -f filename]; then测试文件的说明 如果您想要等号的第二个unix命令,请在$()中使用fname=$(echo "${filepath}/${filename}" | cut -f 1 -d '.') 当人们发现你应该使用printf而不是echo时(首先让这个工作),不要感到困惑。
当人们发现你应该使用${filename%.*}代替cut时,不要感到困惑(首先让这个工作,你发现cut很好。) 使用大括号的大括号,touch ${FNAME}.cnf没有空格 使用ls -a .cnf查看您是否有空文件 使用小写变量名称,它们不会与保留名称冲突 很高兴你今天学到了新东西。