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

exh*_*end 2 unix linux shell png

我有文件名称:

Ff6_01.png
Ff6_02.png
Ff6_03.png
...
...
FF1_01.png
FF1_02.png
FF1_03.png
Run Code Online (Sandbox Code Playgroud)

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

fed*_*qui 6

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

因此,您可以这样做:

for file in F*png
do
   mv "$file" "${file:2}"
done
Run Code Online (Sandbox Code Playgroud)

如果${file:2}不对rename你有用(两者都没有),你也可以使用sedcut:

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
Run Code Online (Sandbox Code Playgroud)

测试

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

$ mv "$file" "${file:2}"
$ ls
6_01.png
Run Code Online (Sandbox Code Playgroud)