linux - 如何在 linux shell 中删除多个文件名的前 2 个字母?

标签 linux shell unix png

我有以下名称的文件:

Ff6_01.png
Ff6_02.png
Ff6_03.png
...
...
FF1_01.png
FF1_02.png
FF1_03.png

我想删除每个文件名的前两个字母,因为这样我的文件顺序就会正确。有谁知道 linux shell 中的命令吗?

最佳答案

您可以使用语法 ${file:2} 来引用从第 3 个字符开始的名称。

因此,您可以:

for file in F*png
do
   mv "$file" "${file:2}"
done

如果 ${file:2} 对你不起作用(rename),你也可以使用 sed:

for file in F*png
do
    new_file=$(sed 's/^..//' <<< "$file") <---- cuts first two chars
    new_file=$(cut -c3- <<< "$file")      <---- the same
    mv "$file" "$new_file"
done

测试

$ file="Ff6_01.png"
$ touch $file
$ ls
Ff6_01.png

$ mv "$file" "${file:2}"
$ ls
6_01.png

关于linux - 如何在 linux shell 中删除多个文件名的前 2 个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328525/

相关文章:

linux - 为什么我需要在安装我的二进制文件后设置 LD_LIBRARY_PATH?

unix - 如何使用 ant 将文件从 Unix 共享复制到 Windows 机器?

c - 在迷你 shell 中使用管道系统调用

c++ - 为 x86 系统编译 Readline(静态模式)

linux - 有充分的理由不利用 makefile 顶部的 '#!/bin/make -f' 来提供可执行的 makefile 吗?

linux - 我们如何在每次提交时备份或克隆 GitoLite 服务器

进程是否可以请求正在运行的 shell 进程运行某些命令并接收该命令的标准输出?

shell - 如何修改 PS1 以在最右角显示时间?

vim - 在不从 Vim 中过滤的情况下执行 shell 命令

unix - Windows 中的 Win 32 API 等 UNIX 的 API 是什么?