Bash脚本可删除目录下每个文件中文件名的一部分

布赖恩·菲茨帕特里克(Brian Fitzpatrick)

我的目录下有几个文件,它们的名称均为形式*.foo.bar我想编写一个bash脚本,以通过删除该.foo部分来重命名每个文件

例如,假设发行tree ~/dir/退货

/home/user/dir/
|- george.foo.bar
|- john.foo.bar
|- paul.foo.bar
|- ringo.foo.bar
|- subdir
   |- jimmy.foo.bar
   |- robert.foo

然后运行script ~/foo/应将的内容更改~/foo

/home/user/dir/
|- george.bar
|- john.bar
|- paul.bar
|- ringo.bar
|- subdir
   |- jimmy.bar
   |- robert.foo
吉米吉

您可以使用参数扩展机制

shopt -s globstar
for file in **/*foo.bar; do
    prefix="${file%.foo*}"
    suffix="${file##*.foo}"
    mv -v -- "$file" "$prefix$suffix"
done

${file%.foo*}匹配后缀移除(只留下前缀),并${file#*.foo}移除了前缀(离开后缀)。**需要双星星球()遍历所有子目录并setopt -s globstar允许该星球。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取文件名的一部分

Unix时间戳记和file.zip中文件名的一部分

如何删除文件名的一部分?

使用node.js脚本重命名文件名的一部分

重命名Linux中文件名的第一部分?

用于制作新目录的批处理脚本,作为文件名的一部分命名并在其中移动文件

在Linux上删除包含日期戳作为文件名一部分的文件的更干净方法

提取文件名的一部分

如何使用bash脚本删除文件名的一部分

如何在Java中提取CSV文件的文件名的一部分

如何在Windows 7中为许多文件删除文件名的同一部分?

Android-使用文件名的一部分检查文件是否存在

重命名文件,删除文件名bash脚本的一部分

删除文件夹中所有文件名的一部分?

检索文件名的一部分

使用SSIS中文件名的一部分进行文件识别

重命名脚本会覆盖文件名的一部分,而不是在文件名之前

获取目录中每个文件名的一部分

PHP使用已知文件名的一部分移动文件

剥离文件名的一部分

合并大量文件,仅包含文件名的一部分

使用 bash/sed 将文件名的一部分添加到 .csv 文件

在文件的标题中插入文件名的一部分

如何在 bash 脚本中使用 (basename "${video%.*}") 获取文件名的一部分?

根据文件名的一部分搜索和移动文件

如何删除哈希文件中文件路径的第一部分?

bash :将文件名的一部分更改为小写

循环文件并提取文件名的一部分

通过使用 bash 脚本删除现有文件名的一部分来重命名文件