【问题标题】:How to rename multiple filenames in cshell script?如何在shell脚本中重命名多个文件名?
【发布时间】:2015-12-12 00:11:32
【问题描述】:

我有一个包含以下两行的 c shell 脚本,它创建一个目录并将一些文件复制到其中。我的问题如下 - 被复制的文件看起来像这样abc.helloabc.nameabc.date 等...我如何剥离abc 并将它们复制为.hello.name.date.. 等等。我是新手..任何帮助将不胜感激!

mkdir -p $home_dir$param    
cp /usr/share/skel/* $home_dir$param

【问题讨论】:

    标签: unix csh


    【解决方案1】:

    您正在寻找类似basename:

    例如,在 Bash 中,您可以像这样获取基本名称、文件后缀:

    filepath=/my/folder/readme.txt
    filename=$(basename "$filepath")  # $filename == "readme.txt"
    extension="${filename##*.}"       # $extension == "txt"
    rootname="${filename%.*}"         # $rootname == "readme"
    

    附录:

    1. 关键点是“basename”。请参阅我上面链接到的“man basename”页面。这是另一个让事情更清楚的例子:

      basename readme.txt .txt # prints "readme"

    2. "basename" 是标准的 *nix 命令。它适用于任何外壳;它适用于大多数平台。

    3. 如果可以避免的话,我强烈建议您不要在 csh 中编写脚本:

    【讨论】:

    • OP 明确表示csh。您的解决方案适用于bash
    猜你喜欢
    • 2016-03-14
    • 2013-05-02
    • 2021-11-30
    • 1970-01-01
    • 2018-06-09
    • 2012-09-09
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多