1

我想用类似于这样的完整路径更改一些文件名:

/home/guest/test/home/guest/.test.log

我尝试了下面的命令,但它无法搜索“/”

string="/home/guest/test"
substring="/"
replacement="/."

echo ${string/%substring/replacement}.log
4

2 回答 2

0

您可以执行以下操作:

for file in /home/guest/*; do 
    name=${file##*/}
    path=${file%/*}
    mv "$file" "$path"'/.'"$name"'.log'
done
于 2013-06-29T13:58:04.053 回答
0

在 Mac 上使用 bash 创建,因此它可以与您使用的任何 shell 一起使用...

string="/home/guest/test"
echo $string | sed  's/\/\([^\/]\{0,\}\)$/\/.\1.log/'

使用简单的 shell 字符串替换是行不通的,因为我不知道你可以将最后一次出现的 / 符号作为唯一的替换。

更新: 实际上,如果您知道它总是“/two/directories/in”,我会想到另一种方法

string="/home/guest/test"
firstpartofstring=$(echo $string |  cut -d\/ -f1-3)
lastpartofstring=$(echo $string |  cut -d\/ -f4)
echo ${firstpartofstring}/.${lastpartofstring}.log
于 2013-06-29T10:02:26.813 回答