2017-02-18 4 views
-2

У меня есть каталог, который содержит несколько файлов. Мне нужно переименовать эти файлы.удалить префикс и суффикс из файла с помощью mv

Это как имена файлов выглядит следующим образом:

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

Мне нужно удалить «оснастки» и «.txt» из этих файлов.

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

Как это сделать с помощью команды mv?

+1

Вы попробовали команду 'rename'? – RomanPerekhrest

+0

Я попытался, но это не сработало: rename 'rename '/ \. Txt $ //' *. *' – Asdfg

ответ

0

Использование СЭД манипулировать имя файла:

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

Используйте rename команду с конкретным шаблоном регулярного выражения:

rename 's/snap([-a-z0-9]+)\.txt$/$1/' *.* 
Смежные вопросы