我需要一个函数来前缀任何以'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使用prefix="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我想出了一个函数,可以在任何符号链接中添加前缀:
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
}唯一的问题是,它为所有的东西都加上了前缀:
使用prefix="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“开头的符号链接文件名?
发布于 2014-02-10 17:47:26
只需改变你的球体以符合你想要的:
cd $PATH_SOURCE_FILES
shopt -s nullglob
for f in nfcapd* ; do mv "$f" "${prefix}_$f" ; done
shopt -u nullglob
cd $PATH_CURRENT_SCRIPThttps://stackoverflow.com/questions/21684177
复制相似问题