You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯Bash实现:在极简Linux环境下替换文件夹前缀test为ftp

纯Bash实现文件夹前缀替换方案(无rename/sed工具)

没问题,咱们用纯Bash自带的功能就能搞定这个需求,完全不需要依赖rename、sed这些额外工具。这里给你两种靠谱的实现方法:

方法一:利用Bash参数扩展(最推荐)

Bash本身就支持参数扩展,这是最简洁高效的方式,代码如下:

for dir in test_*; do
    # 先确认当前项是文件夹,避免误操作文件
    if [ -d "$dir" ]; then
        mv "$dir" "ftp${dir#test}"
    fi
done

简单解释下这段代码:

  • for dir in test_*:遍历当前目录下所有以test_开头的项目
  • [ -d "$dir" ]:做个安全校验,确保只处理文件夹,不会碰同名的文件
  • "ftp${dir#test}":核心的替换逻辑,${dir#test}会去掉变量dir开头的test字符串,再拼接上ftp就得到了新的文件夹名

方法二:字符串截取(兼容老版本Bash)

如果你的服务器上是特别老旧的Bash版本,参数扩展可能有兼容性问题,可以用字符串截取的方式:

for dir in test_*; do
    if [ -d "$dir" ]; then
        # 获取原文件夹名的长度
        name_length=${#dir}
        # 从第5个字符开始截取("test"是4个字符,索引从0开始)
        suffix=${dir:4:$name_length}
        mv "$dir" "ftp$suffix"
    fi
done

这个逻辑也很直观:先拿到原名字的长度,再从第5个字符开始截取后面的部分,最后拼接ftp前缀完成替换。

安全小提示

执行前建议先预览一下要执行的操作,避免出错。把mv换成echo mv就行,这样只会打印出要执行的重命名命令,确认没问题再换成真实的mv:

for dir in test_*; do
    if [ -d "$dir" ]; then
        echo mv "$dir" "ftp${dir#test}"
    fi
done

内容的提问来源于stack exchange,提问作者giordano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:15:11