Bash脚本从文件夹中的所有文件名中删除字符

时间:2016-03-23 08:54:41

标签: bash

我有一个图片很少的文件夹,都有相同的名称格式:

some-random-name-min.jpg
another-random-name-min.jpg
and-another-random-name-min.jpg

我想删除最后一个-min,以便遵循此ui.bootstrap

我尝试了这个bash脚本:

#!/bin/bash

for filename in /home/al/domus-images/portfolio/white snow/*.jpg; do
    mv $filname $(echo $filename | sed -e 's/....\.jpg$//');
done

但是在运行脚本后没有任何事情发生。不知道我在这里错过了什么?

由于

4 个答案:

答案 0 :(得分:3)

您可以使用find命令列出文件,然后从文件名中删除-min,如下所示。

for filename in `find "/home/al/domus-images/portfolio/white snow/" -name "*.jpg"`;
do
    mv $filname $(echo $filename | sed 's/-min.jpg$/.jpg/');
done

这删除最后" -min"来自文件名。

答案 1 :(得分:2)

这可能是一个想法:

#!/bin/bash    
for filename in *\-min.jpg
do
    newFile=$(echo $filename |sed "s/\-min//g")
    printf "before\t:filename[$filename]\tnewFile[$newFile]\n"
    mv $filename $newFile
    printf "after\t:filename[$filename]\tnewFile[$newFile]\n"
done

输出

[shell] ➤ ./myMove
before  :filename[and-another-random-name-min.jpg]      newFile[and-another-random-name.jpg]
after   :filename[and-another-random-name-min.jpg]      newFile[and-another-random-name.jpg]
before  :filename[another-random-name-min.jpg]  newFile[another-random-name.jpg]
after   :filename[another-random-name-min.jpg]  newFile[another-random-name.jpg]
before  :filename[some-random-name-min.jpg]     newFile[some-random-name.jpg]
after   :filename[some-random-name-min.jpg]     newFile[some-random-name.jpg]

*\-min.jpg只是为了确保只获取您需要的文件

答案 2 :(得分:0)

这可能就是你要找的东西

#!/bin/bash

for filename in /home/al/domus-images/portfolio/white snow/*-min.jpg
do
    mv ${filename} ${filename//-min.jpg/.jpg}
done

答案 3 :(得分:0)

不能比这简单。

rename 's/\-min.jpg$/.jpg/' *-min.jpg