linux - 前置符号链接(symbolic link)文件名

标签 linux bash function for-loop symlink

我需要一个函数来为任何以“nfcapd”开头的文件名添加前缀

原始文件集:

/root/netflow3/nfcapd.201402090310 -> /a/b/nfcapd.201402090310
/root/netflow3/nfcapd.201402050400 -> /a/b/nfcapd.201402050400
/root/netflow3/nfcapd.201402100730 -> /a/b/nfcapd.201402100730
/root/netflow3/1.nfcapd.201402100730  -> /a/e/nfcapd.201402100730
/root/netflow3/2.nfcapd.201402100730  -> /a/f/nfcapd.201402100730

使用前缀="foo_":

/root/netflow3/foo_nfcapd.201402090310 -> /a/b/nfcapd.201402090310
/root/netflow3/foo_nfcapd.201402050400 -> /a/b/nfcapd.201402050400
/root/netflow3/foo_nfcapd.201402100730  -> /a/b/nfcapd.201402100730
/root/netflow3/1.nfcapd.201402100730  -> /a/e/nfcapd.201402100730
/root/netflow3/2.nfcapd.201402100730  -> /a/f/nfcapd.201402100730

我想出了一个可以为任何符号链接(symbolic link)添加前缀的函数:

readonly PATH_CURRENT_SCRIPT="$(dirname $0)"

sym_rename () {
        local PATH_SOURCE_FILES=$1
        local prefix=$2

        [[ ! -d $PATH_SOURCE_FILES ]] && echo "path $dir not found!  Exiting...." && exit 1

        cd $PATH_SOURCE_FILES
        for f in * ; do mv "$f" "${prefix}_$f" ; done
        cd $PATH_CURRENT_SCRIPT
}

唯一的问题是它给所有东西加了前缀:

使用前缀="foo_":

/root/netflow3/foo_nfcapd.201402090310 -> /a/b/nfcapd.201402090310
/root/netflow3/foo_nfcapd.201402050400 -> /a/b/nfcapd.201402050400
/root/netflow3/foo_nfcapd.201402100730  -> /a/b/nfcapd.201402100730
/root/netflow3/foo_1.nfcapd.201402100730  -> /a/e/nfcapd.201402100730
/root/netflow3/foo_2.nfcapd.201402100730  -> /a/f/nfcapd.201402100730

我如何修改该函数以只为以“nfcapd”开头的符号链接(symbolic link)文件名添加前缀?

最佳答案

只需更改您的 glob 以匹配您想要的:

    cd $PATH_SOURCE_FILES
    shopt -s nullglob
    for f in nfcapd* ; do mv "$f" "${prefix}_$f" ; done
    shopt -u nullglob
    cd $PATH_CURRENT_SCRIPT

关于linux - 前置符号链接(symbolic link)文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21684177/

相关文章:

linux - bash 中的复活节计算产生恒定的结果

linux - 从键值文件中提取版本并在单个命令中替换为 html 文件

python - 如何使用通过函数获得的用户输入来更改全局变量?

Mysql函数删除少于3个字符的单词

c - 我的代码在 Windows 上运行,但在 Linux 上失败。错误: premature end of file bmp

linux - 来自不同 IP 的 Wordpress 不受控制的提要请求

linux - 从命令行保存某个字符串

java - Grails 在新服务器上启动时卡住

bash - 在 bash 中使用 gnu parallel 和 cat 时删除多个文件扩展名

javascript - 在javascript中制作特殊的函数原型(prototype)