我需要一個函數來前綴的文件名以 '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
我來了具有可以爲任何符號鏈接添加前綴的功能:
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」開始只是前綴符號鏈接的文件名?
請注意,您的代碼將前綴* *的任何文件,而不僅僅是符號鏈接。您可能要考慮在重命名之前使用'-h'測試每個文件。 '[[-h $ f]] && mv「$ f」「$ {prefix} _ $ f」'。 – chepner