gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:50 25 4
gpt4 key购买 nike

我需要一个函数来为任何以“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com