加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

重命名UNIX目录中的文件 – shell脚本

发布时间:2020-12-15 22:40:24 所属栏目:安全 来源:网络整理
导读:我一直在尝试编写一个脚本,它将获取当前工作目录,扫描每个文件并检查它是否是.txt文件.然后获取每个文件(这是一个文本文件),并检查它的名称中是否包含下划线,以及是否将下划线更改为连字符. 我知道这是一个很高的命令,但这是我到目前为止的粗略代码: #!/bin
我一直在尝试编写一个脚本,它将获取当前工作目录,扫描每个文件并检查它是否是.txt文件.然后获取每个文件(这是一个文本文件),并检查它的名称中是否包含下划线,以及是否将下划线更改为连字符.

我知道这是一个很高的命令,但这是我到目前为止的粗略代码:

#!/bin/bash
count=1
while((count <= $#))
       do
          case $count in
               "*.txt") sed 's/_/-' $count
          esac
          ((count++))
done

我的想法是,这将把当前工作目录中的文件作为参数并检查每个文件(由$count表示或文件在“count”).然后对于每个文件,它将检查它是否以.txt结尾,如果是,它将使用sed将每个下划线更改为连字符.我认为我遇到的一个主要问题是脚本没有从当前工作目录中读取文件.我尝试在运行脚本的命令后包含目录,但我认为它占用了每一行而不是每个文件(因为每行有4个左右的文件).

无论如何,任何帮助将不胜感激!另外,我很抱歉我的代码太糟糕了,我对UNIX很新.

解决方法

for fname in ./*_*.txt; do
  new_fname=$(printf '%s' "$fname" | sed 's,_,-,')
  mv "$fname" "$new_fname"
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读