使用mv从文件中删除前缀和后缀

时间:2017-02-18 21:38:44

标签: linux rename mv

我有一个包含多个文件的目录。我需要重命名这些文件。

这是文件名的样子:

snap-file-name-1.txt
snap-file-name-2.txt
snap-file-name-3.txt

我需要从这些文件中删除“snap”和“.txt”。

-file-name-1
-file-name-2
-file-name-3

如何使用mv命令执行此操作?

3 个答案:

答案 0 :(得分:1)

使用sed操作文件名:

ls | while read file; do
    mv -- ${file} $(sed -n 's/snap\(.*\).txt/\1/p' <<<${file})
done

答案 1 :(得分:0)

使用Bash,您可以执行以下操作来重命名这些文件:

#!/bin/bash
files=$(find -type f -name 'snap-file-name-*.txt')
for f in $files
do
  mv "$f" "$(echo $f | sed -n 's/snap\(.*\).txt/\1/p')"
done

答案 2 :(得分:0)

使用具有特定正则表达式模式的rename命令:

rename 's/snap([-a-z0-9]+)\.txt$/$1/' *.*