Как удалить квадратные скобки, какой-либо текст внутри и пространство после и перед скобками?

У меня есть много фотографий, которые должны быть переименованы.

[Wedding] Happy Day_001 [February].jpg
[Mountain] Summer Camp_165 [May].jpg
[Beach] Music Fest_58 [August].jpg

Мне нужны все квадратные скобки, которые будут удалены. Для этого я нашел это и это.

Используя sed управляйте как на тех страницах, пространство прежде и после того, как скобки будут все еще там. В моем случае я хочу, чтобы текст внутри, пространство прежде и после, и скобки само был удален.

Happy Day_001.jpg  
Summer Camp_165.jpg  
Music Fest_58.jpg

Удалить [first]  &  [last] скобки, как я могу сделать это с a sed команда?

6
задан 23 October 2017 в 02:13

2 ответа

sed неправильный инструмент. Это не переименовывает файлы. В то время как можно соединить его с чем-то, что может, это быть более простым использовать rename от Perl:

rename -n 's/\[.*?\]//g' *

С -n, rename покажет то, какие изменения будут внесены. Выполненный без -n на самом деле переименовать файлы. rename Perl, и в Perl, .*? не жадное соответствие как .*, таким образом, Вы не должны использовать приемы как [^]]*.

Удалить окружающий пробел также:

rename -n 's/\s*\[.*?\]\s*//g' *
7
ответ дан 23 November 2019 в 07:19

Вы не должны использовать sed для переименования файлов но можно использовать программу Perl rename, например:

$ rename -n 's/\[[^]]+\] ([^[]+) \[[^]]+\]/$1/' *
rename([Beach] Music Fest_58 [August].jpg, Music Fest_58.jpg)
rename([Mountain] Summer Camp_165 [May].jpg, Summer Camp_165.jpg)
rename([Wedding] Happy Day_001 [February].jpg, Happy Day_001.jpg)

Удалить -n после тестирования для фактического переименования файлов.

Примечания

  • s/old/new замена old с new
  • \[ литерал [
  • [^[]+ некоторые символы, которые не являются [
  • (stuff) сохранить stuff на потом к ссылке как $1, $2 и т.д.

Это только работает, если Ваши имена файлов последовательны. ответ muru является намного более портативным.

9
ответ дан 23 November 2019 в 07:19

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

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