Как переименовать эти файлы с помощью регулярных выражений?

Использование rename:

rename -n 's/_/ /g' *

Если все в порядке, удалите переключатель -n:

rename 's/_/ /g' *
~/tmp$ tree
.
├── file
├── file_1
├── file_2
├── file_3
└── file_with_underscores

0 directories, 5 files
~/tmp$ rename 's/_/ /g' *
~/tmp$ tree
.
├── file
├── file 1
├── file 2
├── file 3
└── file with underscores

0 directories, 5 files
1
задан 14 March 2016 в 14:05

3 ответа

Использование расширения bash:

for file in *.png; do mv -i "$file" "${file%% *}".png; done

${file%% *} будет отбрасывать нежелательную часть имени файла, начиная с пробела. Затем добавление .png добавляется после имени файла, а mv -ing.

4
ответ дан 23 May 2018 в 12:54
  • 1
    Это лучше, чем другой ответ bash. Спасибо. – Interesting Knox 12 March 2016 в 14:07

Вы можете попробовать следующий код python snippet

import os
import glob
files = glob.glob('*')
for file in files:
    var1 = file.find(' (')
    var2 = file.find(')')+1
    filename = file[:var1] +  file[var2:]
    os.rename(file, filename)
glob находит все файлы, которые удовлетворяют аргументу regex. Вы перебираете список и изменяете имя файла rename, меняя имя file
3
ответ дан 23 May 2018 в 12:54

Используя bash и расширение параметра, запустите следующий код из того же каталога, где у вас есть файлы.

for file in *.png ; do NAME="${file%%\ \(*}"; EXT="${file##*.}" ; mv "$file" "$NAME"."$EXT"   ; done  

Пример выполнения

$> ls                                                                                                                             
icon-culture (2015_09_04 06_58_44 UTC).png  icon-disk (2015_09_04 06_58_44 UTC).png
$> for file in *.png ; do NAME="${file%%\ \(*}"; EXT="${file##*.}" ; mv "$file" "$NAME"."$EXT"   ; done                               
$> ls
icon-culture.png  icon-disk.png
3
ответ дан 23 May 2018 в 12:54

Другие вопросы по тегам:

Похожие вопросы: