1
我想改变一些文件名与此类似完整路径:shell脚本:如何替换文件名
/home/guest/test
⟶/home/guest/.test.log
我想下面的命令,但它不能搜索“/”
string="/home/guest/test"
substring="/"
replacement="/."
echo ${string/%substring/replacement}.log
我想改变一些文件名与此类似完整路径:shell脚本:如何替换文件名
/home/guest/test
⟶/home/guest/.test.log
我想下面的命令,但它不能搜索“/”
string="/home/guest/test"
substring="/"
replacement="/."
echo ${string/%substring/replacement}.log
使用在Mac上的bash,所以它可能与任何外壳使用的是工作...创建
string="/home/guest/test"
echo $string | sed 's/\/\([^\/]\{0,\}\)$/\/.\1.log/'
使用简单的shell字符串替换不会起作用,因为我知道您无法将最后一次出现的/ sign作为唯一替代方法。
更新: 其实我来想的另一种方式,如果你知道它始终是“/二/目录/在”
string="/home/guest/test"
firstpartofstring=$(echo $string | cut -d\/ -f1-3)
lastpartofstring=$(echo $string | cut -d\/ -f4)
echo ${firstpartofstring}/.${lastpartofstring}.log
你可以这样做:
for file in /home/guest/*; do
name=${file##*/}
path=${file%/*}
mv "$file" "$path"'/.'"$name"'.log'
done
find/opt -type f -exec echo {} \; | sed's/\/\([^ \ /] * \)$/\ /。\ 1.lock /' – jnstar
for i in/home/guest /做P ='dirname $ i'; F ='basename $ i'; echo $ P“/."$ F”.lock“;完成 – jnstar
查找。 | sed“s/\(。* \)\/\(。* \)/ \ 1 \ /。\ 2.lock /” – jnstar