【问题标题】:Get file name from full path in Unix从 Unix 中的完整路径获取文件名
【发布时间】:2012-01-11 05:33:21
【问题描述】:

我正在尝试从我的 bashrc 中的函数的参数的完整路径中获取文件的名称。我不知道任何正则表达式,所以我有点迷茫。我知道我想获得最后一个正斜杠并在那之后使用所有东西,但我不太确定如何去做。然后我想将它存储在我的函数中的一个变量中,稍后我将使用它。

感谢任何帮助!

【问题讨论】:

    标签: regex bash unix


    【解决方案1】:

    也许使用basename $file_path

    【讨论】:

      【解决方案2】:

      我想你在找basename

      【讨论】:

        【解决方案3】:

        可能最简单的方法是:

        PATH=/my/big/long/path/to/a/little/bitty/file
        FILENAME=`basename $PATH`
        echo $FILENAME
        

        将输出“文件”

        【讨论】:

          【解决方案4】:

          您应该引用basename 的输入及其输出,以防其中任何一个包含有意义的字符,例如空格。

          file_basename="$(basename "$filename")"
          

          【讨论】:

            【解决方案5】:

            最快的方法是使用变量替换

            f1=/my/big/long/path/to/a/little/bitty/file
            f2=./my/big/long/path/to/a/little/bitty/file
            f3=my/big/long/path/to/a/little/bitty/file
            f4=file
            
            echo ${f1##*/}
            echo ${f2##*/}
            echo ${f3##*/}
            echo ${f4##*/}
            
            # This is how you get value out
            filename=${f1##*/}
            

            输出;

            file
            file
            file
            file
            

            您可以使用basename,但这会很慢,因为它会启动一个新的子进程。

            【讨论】:

            • 当路径名是以“/”结尾的目录时,这与 basename 的行为不同。这可能是也可能不是问题,具体取决于使用情况。 basename /foo/bar/ 输出 barx=/foo/bar/; echo ${x##*/} 不输出任何内容。
            • 如果您尝试提取文件名,那么 /foo/bar/ 应该什么都不返回,因为路径中没有文件名。所以逻辑上是正确的。
            【解决方案6】:

            下面的 awk 命令执行此操作:

            259> which cna_update
            /vobs/cna/bin/cna_update
            262> which cna_update|awk -F"/" '{print $NF}'
            cna_update
            

            【讨论】:

              猜你喜欢
              • 2012-04-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-04-13
              • 1970-01-01
              • 2011-04-19
              相关资源
              最近更新 更多