大佬教程收集整理的这篇文章主要介绍了如何通过bash在文件名中自动插入字符串?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我每天都有输出文件:
linux-202105200900-foo.direct.tar.gz
日期和时间字符串,例如:202105200900
将每天更改。
我需要手动将这些文件重命名为
linux-202105200900x86-foo.direct.tar.gz
(在日期/时间后插入一个短字符串 x86
)
任何 bash 脚本都可以帮助做到这一点?
如果您总是在字符串中的第 18 号字符处插入字符串“x86”,您可以使用该命令:
var="linux-202105200900-foo.direct.tar.gz"
var2=${var:0:18}"x86"${var:18}
echo $var2
第 2 行的意思是:“将 var 的前 18 个字符分配给变量 var2,然后是 x86,然后是变量 var 的其余部分”
如果你想在字符串的最后一个连字符之前插入“x86”,你可以这样写:
var="linux-202105200900-foo.direct.tar.gz"
var2=${var%-*}"x86-"${var##*-}
echo $var2
第二行的意思是:“赋值给变量var2:
除了 @jean-Loup Sabatier 的非常好的答案之外,另一种可能更通用的方法是将第二次出现的 '-'
替换为 x86-
,您可以使用 {{1 }}。假设您有:
sed
您可以通过以下方式更新:
fname=linux-202105200900-foo.direct.tar.gz
它只是使用带有 fname="$(sed 's/-/x86-/2' <<< "$fname")"
和 hereString 的命令替换来修改 sed
,将修改后的结果分配回 fname
。
示例使用/输出
fname
,
我想尽可能简单,考虑到只有时间戳会改变,这个脚本应该这样做。只需在文件所在的文件夹中运行它,您就会使用 x86
重命名所有文件。
#!/bin/bash
for file in $(ls); do
replaced=$(echo $file | sed 's|-foo|x86-foo|g')
mv $file $replaced
done
这是我的输出
filip@filip-ThinkPad-T14-Gen-1:~/test$ ls
linux-202105200900-foo.direct.tar.gz linux-202105201000-foo.direct.tar.gz linux-202105201100-foo.direct.tar.gz
filip@filip-ThinkPad-T14-Gen-1:~/test$ ./../development/bash-utils/bulk-rename.sh
filip@filip-ThinkPad-T14-Gen-1:~/test$ ls
linux-202105200900x86-foo.direct.tar.gz linux-202105201000x86-foo.direct.tar.gz linux-202105201100x86-foo.direct.tar.gz
只需遍历当前文件夹中的所有文件,管道结果为 sed
以将正则表达式 -foo
替换为 x86-foo
,然后使用 @H_878_5@mv 命令重命名文件。
正如 David 在评论中提到的,如果您担心 -foo
可能多次出现,那么您可以将 g
作为全局替换为 1
作为第一次出现,就是这样!
你需要这个吗?
❯ dat=$(date '+%Y%m%d%H%M%S'); echo ${dat}
20210520170336
❯ filename="linux-${dat}x86-foo.direct.tar.gz"; echo ${filename}
linux-20210520170336x86-foo.direct.tar.gz
,
除了@David C. Rankin 的非常好的答案之外,只需将其添加到循环中并重命名文件
# !/usr/bin/bash
for file in `ls linux* 2>/dev/null` # Extract all files starTing with linux
do
echo $file
fname="$(sed 's/-/x86-/2' <<< "$file")"
mv "$file" "$fname" # Rename file
done
收到的输出:linux-202105200900x86-foo.direct.tar.gz
以上是大佬教程为你收集整理的如何通过bash在文件名中自动插入字符串?全部内容,希望文章能够帮你解决如何通过bash在文件名中自动插入字符串?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。