regex - 修剪目录中所有文件的一部分文件扩展名 - Linux

标签 regex linux bash awk sed

我有一个要求,我想修剪目录中包含的所有文件的文件扩展名:-

文件会是这样的;

America.gz:2170
Europe.gz:2172
Africa.gz:2170
Asia.gz:2172

我需要的是从所有文件中删除 :2170 和 :2172,以便只保留 .gz 扩展名。

我知道在下面的 SED 代码的帮助下,一个文件中的所有条目都是可能的,但是我需要一个目录中的所有文件:-

**sed 's/:.*//' file**

任何修复此问题的 bash 或 awk 代码将不胜感激。

提前致谢。

最佳答案

您可以在 bash 中执行此操作:

shopt -s nullglob
for f in *.gz:*; do
    mv -- "$f" "${f%:*}"
done

"${f%:*}" 将删除 : 之后的所有内容,在变量 $f

的 RHS 上

关于regex - 修剪目录中所有文件的一部分文件扩展名 - Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32997749/

相关文章:

linux - 使用命令行工具获取apache服务器版本

linux - 如何停止生成 strace.out 文件

函数中的 Git 别名输出着色

regex - Visual Studio在字符类中查找并替换右方括号]

c# - 有人在 C# 应用程序中使用过 RE2 吗?

regex - 我想使用正则表达式来格式化文本

c# - .NET 正则表达式中的 "groups"和 "captures"有什么区别?

asp.net - 是否可以在 Linux 上为 asp 和 asp.net 设置 Web 服务器?

linux - 在 shell 脚本中设置环境变量以在远程服务器上运行

linux - 用于在特定文件夹中查找文件并基于文件的 "age"的 Shell 脚本