我有一个包含多个文件的目录。我需要重命名这些文件。
这是文件名的样子:
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
命令执行此操作?
答案 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/' *.*