我想用类似于此的完整路径更改一些文件名:
/home/guest/test
⟶/home/guest/.test.log
我尝试了下面的命令,但无法搜索“/”
string="/home/guest/test"
substring="/"
replacement="/."
echo ${string/%substring/replacement}.log
答案 0 :(得分: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
答案 1 :(得分:0)
您可以执行以下操作:
for file in /home/guest/*; do
name=${file##*/}
path=${file%/*}
mv "$file" "$path"'/.'"$name"'.log'
done